2014-10-09 3 views
1

Я создаю проект базы данных для своего проекта. Теперь у меня есть диаграммы классов, которые, имеющий 3-х классов:Должен ли дизайн базы данных не основываться на концепции ООП?

Admin Organizer Student 

, которые обобщаются в одном классе User. Дело в том, что в базе данных я должен создать 1 таблицу USER или 3 таблицы для конкретного? Более того, следует ли мне создавать отдельные таблицы для каждого объекта/компонента/DTO или я должен обобщать на некоторые и создавать меньше таблиц?

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

Thanx.

+0

По своей природе, база данных SQL, как правило, 2D, это говорит о том, что он не гарантирует, используя дизайн OO. Вместо этого сосредоточьтесь на нормализации данных, то есть в одной или нескольких таблицах содержатся общие данные, которые используются совместно с другими таблицами. Когда вы создаете свои объекты, вы будете делать аналогичную вещь, нормализуете общность и строите иерархию объектов ... – MadProgrammer

+0

@MadProgrammer: В соответствии с примером, о котором идет речь, какой подход предпочтет? – z21

+0

Мне нужно знать атрибуты объектов – MadProgrammer

ответ

0

Я думаю, что в этом случае вам нужно решить, в зависимости от того, сколько переменных имеют ваши сущности.

Если Admin, Organizer and Student доли только некоторые основные колонны, и есть много отдельнога - вы бы лучше выбрать таблицу на CLASS стратегии наследования, или создать MappedSuperclass.

Если ваши объекты разделяют большинство столбцов и имеют только одну или две дополнительные переменные - возможно, ОДИН ТАБЛИЦА с дискриминатором будет полезной для вас.

1

Я думаю, что тема, о которой вы говорите, - это реляционное сопоставление объектов. Как объекты могут быть представлены в виде таблиц.

Эти две разные парадигмы - объекты и РСУБД. Сопоставление между ними всегда является вопросом компромисса, поскольку каждая технология оптимизирована для определенной цели.

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

Есть ключевые моменты, чтобы понять: 1. Как представлять простые данные в таблицах 2. Как представляют отношения как таблицы 3. Как представляет наследство 4. Как разделить один большой объект на несколько таблицы для эффективности

В хорошей книге Hibernate будут обсуждаться все эти аспекты.

Образец учебник: http://www.dineshonjava.com/p/implementing-inheritance-in-hibernate.html#.VDYu3meSx2o