2014-06-09 1 views
0

Добрый день,Многие-ко-многим ERD

компании недвижимости имеют несколько Здания, каждое здание под управлением одного или нескольких менеджеров, менеджеры имеют доступ к одному или более зданий. Таким образом, между менеджерами и зданиями существует взаимосвязь «многие-ко-многим». Это должна быть таблица, такая как Разрешения, чтобы избавиться от отношений «многие ко многим».

Пожалуйста, помогите мне разобраться, какой лучший дизайн для базы данных?

Я придумал две диаграммы кандидата, какая из них лучше? Если ни один из них не хорош, что я должен изменить?

http://i.stack.imgur.com/Z0l6h.png
http://i.stack.imgur.com/Dg5Sv.png

С уважением

+0

Возможно, это потому, что я не «джентльмен», но я с трудом понимаю, что вы хотите использовать ** Permissions ** table. Кажется, что ваши ERD имеют ограниченное представление о том, как управлять отношениями «многие ко многим» в базе данных. Вы хотите, чтобы ** Менеджеры ** имели много ** Зданий ** _through_ ** Разрешения **? это то, что показывает ваш второй ERD? Это должны быть FK, а не PK – eriese

+0

@eriese Приношу свои извинения. Согласно wiki, «большинство систем управления базами данных поддерживают только отношения« один ко многим ». Именно по этой причине я пытаюсь избавиться от многих-ко-многим между зданиями и менеджерами.Да, я хочу управлять, какие менеджеры управляют зданиями через таблицу разрешений. BuildingID и ManagerID в таблице Permisions является составной PK. – koryakinp

+0

У вас есть представление о том, какие языки/фреймворки и базы данных вы будете использовать для его создания? Я привык к Ruby on Rails с Postgresql, который использует activerecord для очень простого управления отношениями и обрабатывает многих для многих. – eriese

ответ

0

The second picture кажется ближе

Я предлагаю двигаться коробки вокруг немного, чтобы показать иерархию. Поместите Компании вверх и в центр, затем в следующий ряд, Менеджеры слева, Здания справа и Разрешения между этими двумя.

0

Диаграммы ER используются для двух разных целей. Одна из целей - проиллюстрировать субъекты субъекта и отношения между ними, как это понимают эксперты по предмету. Это называется концептуальной моделью данных.

Другая цель - проиллюстрировать предлагаемый проект базы данных, где отношения не только выражены, но и реализованы каким-то образом. Если дизайн является реляционным (как правило, он), отношения «многие ко многим» выражаются путем создания промежуточной таблицы. Это называется физической моделью данных (в какой-то литературе она называется логической моделью). Это то, что вы сделали на своей второй диаграмме.

Ваша первая диаграмма может быть очищена немного, исключив коробку с именем «разрешения» и поместив воронку на обоих концах линии, соединяющей Менеджеров и Здания.

Теперь вернемся к вашему вопросу: какой из них «лучше»? Это зависит. иногда концептуальная диаграмма лучше обсуждает предмет с конечными заинтересованными сторонами: нетехническими менеджерами, которые работают с данными все время и могут называться «экспертами по предмету».

Физическая схема обычно лучше при обсуждении предлагаемого дизайна среди архитекторов данных и программистов. Это объясняет не только то, как данные работают в концепции, но также и то, как должна строиться база данных. Эта деталь детализирована концептуальной моделью.

Таким образом, вы можете получить две диаграммы и использовать соответствующую в зависимости от вашей аудитории.