Mysql
 sql >> база данни >  >> RDS >> Mysql

Проектиране на база данни с рецепти, която трябва да включва съставки, както и подрецепти

Изглежда, че имате нужда от модел на база данни, подобен на този:

Този модел има следните свойства:

  • По същество всяка рецепта е поредица от стъпки.
  • Всяка стъпка има своя ред спрямо други стъпки от същата рецепта (STEP_NO), единица (маса, обем, брой...), количество в тази единица и т.н.
  • Конкретна стъпка е свързана или със съставка (когато INGREDIENT_ID не е NULL), или с друга рецепта (когато SUBRECIPE_ID не е NULL).
  • Освен това, STEP е доста стандартна съединителна маса, която реализира връзка много към много, което означава, че една и съща съставка може да се използва в множество рецепти (или дори няколко стъпки от една и съща рецепта), а също и рецепта може да бъде „подрецепта“ от множество други рецепти.
  • Това по същество е насочена графика. Самият модел на данни няма да предотврати цикли – те трябва да се избягват на ниво клиентски код и евентуално да се откриват от тригери.

Ако MySQL поддържа CHECK ограничения (които не ), можете да се уверите, че един (но не и двата) от тях не е NULL, както следва:

CHECK (
    (INGREDIENT_ID IS NULL AND SUBRECIPE_ID IS NOT NULL)
    OR (INGREDIENT_ID IS NOT NULL AND SUBRECIPE_ID IS NULL)
)

Както е сега, ще ви трябва спусък за това.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализирайте версията на MySQL от 5.1 на 5.5 в CentOS 6.2

  2. Как да пропуснете колони в CSV файл при импортиране в MySQL таблица с помощта на LOAD DATA INFILE?

  3. Как да се свържем дистанционно с MySQL база данни, разположена на нашия споделен сървър

  4. Пагинация в PDO PHP

  5. Свързване на MySQL от JSP