2012-02-14 2 views
1

Я делаю некоторые работы с использованием Azure и Idea Blade DevForce, и мне интересно, какой лучший подход в плане отображения объектов в таблицы базы данных ...Должен ли объект сопоставить свою собственную таблицу базы данных?

Должен ли объект иметь свою собственную таблицу в базе данных? Есть ли какие-либо выгоды/вред производительности для этого?

Скажем, у нас есть объект «Заказ», объект «Продукт», объект «Клиент» и объект «Адрес»; каковы про/минусы их смешивания в одной таблице и их разделение? Очевидно, что db не будет в 3-й нормальной форме, если мы не разделимся, но имеет ли это значение при использовании MEF/DevForce?

В качестве второго (менее надуманного) примера, что, если бы у нас была сущность «Учетная запись» и «Пользовательская» сущность; у учетной записи может быть много пользователей, но пользователи могут принадлежать только одной учетной записи ... Таким образом, их размещение в одной таблице не дублирует какие-либо пользовательские данные, но я (лично) все еще считаю, что этот подход является неправильным. Есть ли причины, по которым это было бы выгодно?

+0

Это только производительность, которую вы интересуетесь или другие вещи, такие как ремонтопригодность и т. Д. – Fen

+0

Нет, я также очень заинтересован в ремонтопригодности! Нам нужно будет иметь возможность вносить изменения в модель, которые не полностью нарушают существующие элементы, хранящиеся! – Siyfion

ответ

2

Зависит от того, насколько вам нравится дублировать данные, и хотите ли вы, чтобы кто-то серьезно относился к вам как к разработчику. Бросать все в кучу - это худший анти-шаблон, о котором я могу думать.

Скажите, например, что вы хотите создать 4 заказа для 2 клиентов, каждый из которых содержит 5 продуктов. Только ваши данные Клиента будут повторяться 10 раз за Клиента.

EDIT: Я должен отметить, что мой ответ на вопрос является решительным «да». Мне было бы интересно услышать аргументы ДЛЯ альтернативы ...

+0

Честно говоря, это именно то, о чем я думаю, но я просто хотел проверить, не произошло ли какое-то значительное снижение производительности/гибкости, вызванное этим, поскольку это не то, что сейчас хочет сделать другой разработчик. – Siyfion

+0

Я добавил второй пример, хотя я все еще не вижу причины помещать их все в одну таблицу, если это не связано с производительностью. MySQL или Azure будут механизмом хранения в фоновом режиме FYI. – Siyfion

+0

Возможно, вы столкнулись с проблемами производительности, когда у вас есть активное приложение, использующее этот объект persistence. Я работал над старыми таблицами с такой настройкой, и было больно пытаться идентифицировать уникальную запись, не включая много полей в предикате ... но это мой личный опыт. –

Смежные вопросы