Мне нужно знать, каковы компромиссы использования денормализованной таблицы и использования двух отдельных таблиц и доступа к данным с помощью объединений. Я использую Entity Framework 4.Де-нормализовать таблицу или использовать Объединения в Entity Framework
В моем случае у меня есть две таблицы Order
и OrderCategoryDetails
. Я думаю, лучше ли слияние этих двух таблиц в одну таблицу?
- Если денормализованной, добавленные столбцы (
OrderCategory
иOrderSubcategory
будет будет разреженным (может быть 100% пуст. Всегда будет по крайней мере 50% пустой) - С другой стороны, если я держу его как это, я беспокоюсь о выполнении частых операций объединения (т.е. всякий раз, когда я запрашиваю конкретный
Order
, мне нужна информация отOrderCategoryDetails
.
В настоящее время у меня есть нормализованные таблицы и использовать навигационные свойства:
Чтобы получить доступ к информации заказа Категории от экземпляра OrderItem
OrderItem orderItem = _context.OrderItems.Where(...).FirstOrDefault(); if(2 == orderItem.SalesOrder.Category.OrderCategory){ ...}
Чтобы получить доступ к информации заказа Категории из Номер экземпляра
Order order = _context.Orders.Where(...).FirstOrDefault(); if(2 == order.Category.OrderCategory){ ...}
Это моя схема:
Таблица: Заказать
ID
(первичный ключ)- Дата
- Сумма
- ITEMCOUNT
OrderCategoryInfo
(FK - присоединиться кOrderCategoryDetails
наOrderCategoryDetails.ID
)
Таблица: OrderCategoryDetails
ID
(первичный ключ)- OrderCategory
- OrderSubCategory
Таблица: OrderItem
OrderItem ID
(первичный ключ)- Order ID (FK - Соединение с
Order
)
базы данных используется: SQL Server 2008 R2
«Меня беспокоят частые операции по объединению». , , Означает ли это, что вы не создали таблицы, загрузили образцы данных и протестировали их? –
Я тестировал его, и есть частые операции соединения. Меня это беспокоит, но я не уверен, является ли денормализация лучшей идеей. – escist
Задайте себе вопрос, требует ли каждый заказ OrderCategoryDetail? Если ответ «да», тогда вам может быть лучше отменить нормализацию данных. Если ответ будет отрицательным, вам, вероятно, лучше держать его как отдельный стол. –