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

Добър дизайн на база данни, променлив брой атрибути

Опции 1, 2 и 3 споделят един много сериозен недостатък:трябва да модифицирате основната схема на таблицата, когато някой измисли нов атрибут. В случай на вариант 1 проблемът се усложнява от възможността да бъде въведен нов тип оборудване. Доколко сте сигурни, че наборът от атрибути е фиксиран за всички времена? Колко щастливи ще бъдете да вземете прекъсвания или да кажете на клиента, че не, не можете да имате нов атрибут?

Ако е много вероятно да правите заявки от общи атрибути, може да опитате хибрид от 3 и 4, с тире от 2, хвърлено при разделяне на типа атрибут, а не на типа оборудване, което изглежда много по-нестабилно. Вариант 4, ако разбирам правилно, е нормална версия на вариант 1, която решава всички присъщи му проблеми (рядкост и чупливост).

INVENTORY( id*, model, manufacturer, serial )
ATTRIBUTE( id*, name, type, description )
INVENTORY_FACT_STRING( inv_id*, attr_id*, value )
INVENTORY_FACT_NUMBER( inv_id*, attr_id*, value )
INVENTORY_FACT_LIST_STRING( inv_id*, attr_id*, ordinal*, value )

и др.



  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 с PHP?

  2. Може ли PDO rowCount() след заявка UPDATE да покаже разлика между липса на направени промени и несъществуващ ред?

  3. Как да търсите стойност, разделена със запетая

  4. Заседнал с отказан достъп за потребител 'root'@'localhost' - терминал, Mac

  5. опитвайки се да се свърже с отдалечен mysql от .asp страница