Как создать лучшую структуру таблиц - PullRequest
3 голосов
/ 28 декабря 2010

Для моего сайта у меня есть таблицы

Category :: id | name
Product  :: id | name | categoryid

Теперь у каждой категории могут быть разные размеры, для этого я также создал таблицу

Size :: id | name | categoryid | price

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

Ingredient :: id | name | sizeid | categoryid | price

. Я не уверен, действительно ли нормализована эта структура.Может кто-нибудь, пожалуйста, помогите мне оптимизировать эту структуру и какие индексированные мне нужны для этой структуры?

Ответы [ 3 ]

1 голос
/ 28 декабря 2010

И эти ингредиенты имеют разные цены для разных размеров.

Если цена ингредиента зависит только от его размера, а не от категории, попробуйте следующее:

Ingredient :: id | name 

Ingredient_Price :: ingredientid | sizeid | price

Ingredient_Category :: ingredientid | categoryid
0 голосов
/ 28 декабря 2010

Категория :: id | Имя
Продукт :: id | имя | categoryid
Размер :: id | имя |
Ingredient :: id | имя |
Category_Size :: id | CategoryID | SizeID | Цена
Category_Ingredient :: id | CategoryID | IngredientID | Цена

Все сложные объекты разбиты на наименьшие возможные части (отдельные таблицы). Затем использовал отношения внешнего ключа, чтобы связать их логически.

0 голосов
/ 28 декабря 2010

Структура выглядит хорошо для меня. PK будет проиндексирован, определив их как PK.
Вам нужно добавить индексы для всех ФК:

product.categoryId, 
size.categoryId, 
ingredient.categoryId, 
ingredient.sizeId

В зависимости от размера ваших таблиц и того факта, что вы можете отображать элементы в алфавитном порядке, вы также можете проиндексировать все поля имени.

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