Рекомендую / Предложение на этот дизайн стола .... - PullRequest
0 голосов
/ 02 мая 2011

У меня здесь три стола ... Один - меню, второй - напитки и еда.

В одних данных меню может быть только один напиток или одна еда.

Итак, таблица меню имеет что-то вроде этого ... [id] [type] [type_fk]

Если тип таблицы меню "D", он найдет таблицу напиткови используйте type_fk, чтобы найти напиток ... ... Вот более подробный пример:

id:1,type:D, type_fk:1
id:2,type:F, type_fk:1

в таблице напитков, у нас есть

id:1, name:coke, unit:ml

втаблица еды, у нас есть

id:1, name:chicken 

Результат, по которому я хочу разделить две таблицы, состоит в том, что на столе для напитков есть столбец «единица измерения», а на столе для еды этого нет ... ...Я получу информацию от пользователя в зависимости от типа и type_fk.Итак, в первом примере я могу получить «колу», а во втором я могу получить «курицу».

Пожалуйста, оставьте ваши комментарии к этому дизайну.

Ответы [ 2 ]

0 голосов
/ 02 мая 2011

Я бы предложил, чтобы у вас была одна таблица вместо 2 таблиц:

Menu (Id, ItemId)
Item (Id, Name, Type, Unit)

Причина этого заключается в обеспечении ссылочной целостности. Menu.ItemId будет внешним ключом, который ссылается на Item.Id. Если у вас есть 2 таблицы, вы не сможете обеспечить ссылочную целостность.

Полагаю, вам не стоит беспокоиться о редких столбцах. Например, храните Единицу курицы как кусок или оставьте ее пустой.

Edit:
Если вы хотите избежать разреженной таблицы, таблицы с некоторыми столбцами, которые не используются, то вы можете рассмотреть что-то вроде:

Menu (Id, ItemId)
Item (Id, Name)
ItemProperties (ItemId, Name, Value)

Например

Item:
-----
Id    Name
1     Chicken
2     Coke

ItemProperties:
---------------
ItemId    Name    Value
1         Price   10
1         Type    Chinese
2         Price   1
2         Unit    ml
2         Size    300

Таким образом, вы сохраняете ссылочную целостность и избегаете разреженных таблиц.

Если вы используете SQL Server 2008, отметьте это Разреженные столбцы SQL Server 2008

0 голосов
/ 02 мая 2011

Кажется, здесь нет проблем. Этот дизайн подойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...