Skip to content

PressStart9/FabDb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

29 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ трСбования

НСобходимо Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π‘Π” для сайта ΠΏΠΎΡ…ΠΎΠΆΠ΅Π³ΠΎ Π½Π° fab.com - Ρ‚ΠΎΡ€Π³ΠΎΠ²ΠΎΠΉ ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠΈ ассСтов для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€.

1. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° рСгистрации Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ΠΈΡ… Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.
  • Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ профилях ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ:
    • имя;
    • ΠΏΠΎΡ‡Ρ‚Π°;
    • ΠΏΠ°Ρ€ΠΎΠ»ΡŒ (Π² Π·Π°Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅);
    • баланс (для ΠΏΠΎΠΊΡƒΠΏΠΎΠΊ);
    • список ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ;
      • Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ Π² спискС ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρƒ ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ;
    • ΠΊΠΎΡ€Π·ΠΈΠ½Π°;
    • ΠΊΡƒΠΏΠ»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ (с ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ ΠΎ Ρ‚ΠΎΠΌ, Π±Ρ‹Π» Π»ΠΈ Ρ‚ΠΎΠ²Π°Ρ€ скачан: Ссли Π½Π΅Ρ‚, Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚);
    • история ΠΏΠΎΠΊΡƒΠΏΠΎΠΊ;
    • история поставлСнных ΠΎΡ†Π΅Π½ΠΎΠΊ ΠΈΠ»ΠΈ ΠΎΡ‚Π·Ρ‹Π²ΠΎΠ²;
  • Π”ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΈ платСТная информация.
  • Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π±Ρ‹Π» Π·Π°Π±Π°Π½Π΅Π½, Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚Π·Ρ‹Π²Ρ‹ ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ.
  • Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ профилях ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ-ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ²:
    • имя ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ совпадаСт с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ);
    • баланс (для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° ΠΊΠ°Ρ€Ρ‚Ρƒ);
    • список Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²;
    • общая ΠΎΡ†Π΅Π½ΠΊΠ° (состоит ΠΈΠ· ΠΎΡ‚Π·Ρ‹Π²ΠΎΠ² ΠΈ ΠΈΡ… Π°Π³Ρ€Π΅Π³Π°Ρ‚Π°);
  • Π›ΡŽΠ±ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ автоматичСски являСтся ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Π΅ΠΌ.
  • Π›ΡŽΠ±ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠΌ, пройдя ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ рСгистрации.
  • ΠŸΡ€ΠΎΠ΄Π°Π²Π΅Ρ† Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ статистику ΠΏΠΎ Π΅Π³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ всС вмСстС:
    • сколько Ρ€Π°Π· Π·Π° послСдний дСнь/мСсяц/Π³ΠΎΠ΄, Π·Π° всё врСмя Π±Ρ‹Π» ΠΏΡ€ΠΎΠ΄Π°Π½ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚(Ρ‹);
  • ΠŸΡ€ΠΎΠ΄Π°Π²Π΅Ρ† ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнныС Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΉ для распространСния Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².
  • ΠŸΡ€ΠΎΠ΄Π°Π²Π΅Ρ† ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ ΠΏΡ€ΠΈ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΈ условий использования, послС Ρ‡Π΅Π³ΠΎ всС Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ ΠΏΡ€ΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΈΠ· поиска (ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ всё Π΅Ρ‰Ρ‘ ΠΈΠΌΠ΅ΡŽΡ‚ доступ ΠΊ Π½ΠΈΠΌ, Ссли ΠΊΡƒΠΏΠΈΠ»ΠΈ Π΅Π³ΠΎ Ρ€Π°Π½Π΅Π΅), Π° Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ блокируСтся.
  • МоТно ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π°.

2. Π’ΠΎΠ²Π°Ρ€Ρ‹

  • Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°Ρ…:
    • Π½Π°Π·Π²Π°Π½ΠΈΠ΅;
    • описаниС;
    • подкатСгория;
    • Ρ‚Π΅Π³ΠΈ;
    • ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ;
    • базовая Ρ†Π΅Π½Π°;
    • Ρ€Π°Π·ΠΌΠ΅Ρ€ скидки;
    • Π΄Π°Ρ‚Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ;
    • условия Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ (ΠΈΠ· прСдоставлСнного Π½Π°Π±ΠΎΡ€Π° ΠΈΠ»ΠΈ написанная ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠΌ);
    • ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ возрасту (для всСх возрастов ΠΈΠ»ΠΈ с ограничСниями);
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вСрсий ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²:
    • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ обновлСния.
    • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ вСрсиям.
    • КаТдая вСрсия Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ числовой Π½ΠΎΠΌΠ΅Ρ€ Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Π½Π½Ρ‹ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ (major, minor, patch).
    • ВСрсия Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ скачиваСмый Ρ‚ΠΎΠ²Π°Ρ€ (Π±Π΅Π· описания ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ).
    • Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ вСрсии ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π°Ρ€Ρ…ΠΈΠ²Π° .zip.
    • Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ вСрсии ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ структуру Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ (Π½Π΅ частая опСрация).
  • Π’Π»Π°Π΄Π΅Π»Π΅Ρ† Ρ‚ΠΎΠ²Π°Ρ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ старыС вСрсии.
  • МоТно ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°.
  • МоТно ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΠΎΠ΄ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠΌ.
  • Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:
    • Π°Π²Ρ‚ΠΎΡ€;
    • Π΄Π°Ρ‚Π° написания;
    • Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ (ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пустым для нСзависимых ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²);
    • тСкст;

4. ΠžΡ‚Π·Ρ‹Π²Ρ‹ ΠΈ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

  • Для ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†ΠΎΠ² ΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΉΡ‚ΠΈ Π½Π° страницу ΠΈΡ… ΠΎΡ†Π΅Π½ΠΊΠΈ.
  • На страницС ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³:
    • срСднСС число;
    • количСство ΠΎΡ†Π΅Π½ΠΎΠΊ ΠΎΡ‚ 1 Π΄ΠΎ 5 (Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ);
  • На страницС ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС ΠΎΡ‚Π·Ρ‹Π²Ρ‹ с коммСнтариями.
  • ΠžΡ‚Π·Ρ‹Π² состоит ΠΈΠ·:
    • числСнная ΠΎΡ†Π΅Π½ΠΊΠ° ΠΎΡ‚ 1 Π΄ΠΎ 5;
    • Π°Π²Ρ‚ΠΎΡ€;
    • Π΄Π°Ρ‚Π° написания;
    • тСкст;

5. Поиск ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ

  • Для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° полнотСкстового поиска ΠΏΠΎ названиям, описаниям, Ρ‚Π΅Π³Π°ΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ².
  • Для Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΈ/ΠΈΠ»ΠΈ сортировки ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΏΠΎ подкатСгориям, катСгориям, Ρ†Π΅Π½Π΅, Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Ρƒ, Π΄Π°Ρ‚Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Ρƒ.

6. Π’Π°Π»ΡŽΡ‚Π°

  • ВсС Ρ†Π΅Π½Ρ‹ ΠΈ баланс прСдставлСны Π² Π΄ΠΎΠ»Π»Π°Ρ€Π°Ρ… USD ΠΈ Ρ†Π΅Π½Ρ‚Π°Ρ….
  • ΠŸΡ€ΠΈ ΠΏΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ счёта ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ срСдств происходит конвСртация Π² Π²Ρ‹Π±Ρ€Π°Π½Π½ΡƒΡŽ Π²Π°Π»ΡŽΡ‚Ρƒ.
  • ΠŸΡ€ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ происходит ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ минимальной Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π²Π°Π»ΡŽΡ‚Ρ‹ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠΈ.
  • ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π½ΠΎΡΠΈΡ‚ΡŒ дСньги Π½Π° счёт Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅.
  • ΠŸΡ€ΠΎΠ΄Π°Π²Π΅Ρ† ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ дСньги со счёта Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅.

7. ВСкст

  • Π’Π΅ΡΡŒ тСкст: интСрфСйс, описания ΠΈ названия Π½Π° английском языкС.

UML-Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°

@startuml DB

!define primary_key(x) <b><color:#b8861b><&key></color> x</b>
!define foreign_key(x) <color:#aaaaaa><&key></color> x
!define type(x) : <b>x</b>

!define nnu <<NOT NULL, UNIQUE>>
!define u <<UNIQUE>>
!define nn <<NOT NULL>>

entity Customer {
    primary_key(customer_id) type(BIGSERIAL)
    --
    name type(VARCHAR(50)) nnu
    email type(VARCHAR(254)) nnu /' https://www.rfc-editor.org/errata/eid1690 '/
    password_hash type(VARCHAR(60)) nn /' depends on hash algorithm, e.g. Argon2 '/
    balance type(NUMERIC(12,2)) nn
    created_at type(TIMESTAMP) nn
    --
    is_deleted type(BOOLEAN) nn
    is_banned type(BOOLEAN) nn
}

entity DepositOperation {
    primary_key(deposit_id) type(BIGSERIAL)
    --
    amount type(NUMERIC(12,2)) nn
    made_at type(TIMESTAMP) nn
    --
    foreign_key(customer_id) type(BIGINT) nn
}
Customer ||--o{ DepositOperation : "make"

entity Seller {
    primary_key(seller_id) type(BIGINT)
    --
    seller_balance type(NUMERIC(12,2)) nn
    /'rating type(NUMERIC(2, 1))
     removed for 3NF'/
    --
    is_deleted type(BOOLEAN) nn
    is_banned type(BOOLEAN) nn
}
Customer ||--|| Seller : "can be"

entity WithdrawOperation {
    primary_key(withdraw_id) type(BIGSERIAL)
    --
    amount type(NUMERIC(12,2)) nn
    made_at type(TIMESTAMP) nn
    --
    foreign_key(seller_id) type(BIGINT) nn
}
Seller ||--o{ WithdrawOperation : "make"

entity Category {
    primary_key(category_id) type(BIGSERIAL)
    --
    name type(VARCHAR(20)) nnu
}

entity Subcategory {
    primary_key(subcategory_id) type(BIGSERIAL)
    --
    name type(VARCHAR(20)) nnu
    --
    foreign_key(category_id) type(BIGINT) nn
}
Category ||--|{ Subcategory : "includes"

entity Product {
    primary_key(product_id) type(BIGSERIAL)
    --
    name type(VARCHAR(255)) nn
    description type(TEXT) nn
    price type(NUMERIC(12,2)) nn
    discount type(NUMERIC(3, 1))
    /'rating type(NUMERIC(2, 1))
     removed for 3NF'/
    published_at type(TIMESTAMP) nn
    age_restriction type(VARCHAR(50))
    --
    is_deleted type(BOOLEAN)
    --
    foreign_key(seller_id) type(BIGINT) nn
    foreign_key(subcategory_id) type(BIGINT)
    foreign_key(license_id) type(BIGINT)
}
Seller ||--o{ Product : "sells"
Subcategory |o--o{ Product : "includes"

entity Licence {
    primary_key(licence_id) type(BIGSERIAL)
    --
    name type(TEXT) nnu
    description type(TEXT) nn
    --
    foreign_key(seller_id) type(BIGINT) /' NULL for default licences '/
}
Product }o--o| Licence : "has"
Seller |o--o{ Licence : "create"

entity Tag {
    primary_key(tag_id) type(BIGSERIAL)
    --
    name type(VARCHAR(20)) nnu
}

entity ProductTag {
    primary_key(tag_id) type(BIGINT)
    primary_key(tag_id) type(BIGINT)
}
Product }o--o{ ProductTag
Tag }o--o{ ProductTag

entity ProductVersion {
    primary_key(version_id) type(BIGSERIAL)
    --
    major type(SMALLINT) nn
    minor type(SMALLINT) nn
    patch type(SMALLINT) nn
    file_size_bytes type(BIGINT) nn
    file_hash type(VARCHAR(60)) nn
    file_path type(TEXT) nnu
    uploaded_at type(TIMESTAMP) nn
    --
    foreign_key(product_id) type(BIGINT) nn
}
Product ||--|{ ProductVersion : "has"

entity Wishlist {
    primary_key(customer_id)
    primary_key(product_id)
    --
    product_priority type(SMALLINT)
}
Customer ||--o{ Wishlist : "has"
Product ||--o{ Wishlist : "inserts into"

entity Cart {
    primary_key(customer_id)
    primary_key(product_id)
}
Customer ||--o{ Cart : "has"
Product |o--o{ Cart : "inserts into"

entity PurchaseHeader {
    primary_key(purchase_detail_id) type(BIGSERIAL)
    --
    /'price_paid type(NUMERIC(12,2)) nn
     removed for 3NF'/
    purchased_at type(TIMESTAMP) nn
    --
    foreign_key(customer_id) type(BIGINT) nn
}
Customer ||--o{ PurchaseHeader : "makes"

entity PurchaseDetail {
    primary_key(purchase_detail_id) type(BIGSERIAL)
    --
    price_paid type(NUMERIC(12,2)) nn
    --
    is_downloaded type(BOOLEANEAN) nn
    /'is_refunded type(BOOLEAN) nn
     removed for 3NF'/
    --
    foreign_key(purchase_header_id) type(BIGINT) nn
    foreign_key(product_id) type(BIGINT) nn
}
Product ||--o{ PurchaseDetail : "is included in"
PurchaseHeader ||--|{ PurchaseDetail : "includes"

entity RefundRequest {
    primary_key(purchase_id) type(BIGSERIAL)
    --
    created_at type(TIMESTAMP) nn
    resolved_at type(TIMESTAMP)
    --
    is_accepted type(BOOLEAN)
}
PurchaseDetail ||--o| RefundRequest : "has"

entity Review {
    primary_key(review_id) type(BIGSERIAL)
    --
    rating type(NUMERIC(2,1)) nn
    review_text type(TEXT) nn
    created_at type(TIMESTAMP) nn
    --
    is_deleted type(BOOLEAN) nn
    --
    foreign_key(author_id) type(BIGINT) nn
    foreign_key(product_id) type(BIGINT) nn
}
Customer ||--o{ Review : "writes"
Product ||--o{ Review : "has"

entity Comment {
    primary_key(comment_id) type(BIGSERIAL)
    --
    comment type(TEXT) nn
    created_at type(TIMESTAMP) nn
    --
    is_deleted type(BOOLEAN) nn
    --
    foreign_key(author_id) type(BIGINT) nn
    foreign_key(product_id) type(BIGINT) nn
    foreign_key(parent_comment_id) type(BIGINT) nn
}
Customer ||--o{ Comment : "writes"
Product ||--o{ Comment : "has"
Comment |o--o{ Comment : "is parent of"

entity Complain {
    primary_key(complain_id) type(BIGSERIAL)
    --
    comment type(TEXT) nn
    created_at type(TIMESTAMP) nn
    --
    is_read type(BOOLEAN) nn
    --
    foreign_key(author_id) type(BIGINT) nn
    --
    foreign_key(related_product_id) type(BIGINT)
    foreign_key(related_comment_id) type(BIGINT)
    foreign_key(related_review_id) type(BIGINT)
    foreign_key(related_seller_id) type(BIGINT)
    foreign_key(related_customer_id) type(BIGINT)
}
Product |o--o{ Complain : "can be in"
Comment |o--o{ Complain : "can be in"
Review |o--o{ Complain : "can be in"
Seller |o--o{ Complain : "can be in"
Product |o--o{ Complain : "can be in"

@enduml

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published