Важность ER диаграмм

10

Я студент, и я разрабатываю несколько проектов в рамках моей академии.

Разрабатывая базу данных для одного из проектов, мы столкнулись с ситуацией, когда думали о необходимости ERD или нет. В настоящее время не каждый из нас согласен сначала разработать ERD, а затем разработать базу данных на его основе.

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

Теперь я неукоснительно следую принципам базы данных. Я думаю, что база данных должна быть разработана только из ERD. Итак, я просто хочу знать следующее:

  • Соблюдает ли отрасль эти принципы?
  • Я просто трачу свое время на разработку ERD?
  • Каковы преимущества разработки ERD?
trapaank
источник
Диаграмма ER / EER показывает взаимосвязи между сущностями, а также усиливает функционалов системы.
Если вам нужен бесплатный инструмент для создания ERD для SQL Server ... Информацию можно найти здесь ... facebook.com/DataModelerTool или здесь ... plus.google.com/108968161662966473138
Картер Медлин,
ИМХО, ERD не учитывают все важное - изменения во времени, объем транзакций, наследование в объектно-моделированных системах, отношения «становится» и т. Д. В частности, ERD выделяет все глаголы, оставляя большие пробелы в структуре базы данных. Представьте себе, что вы читаете роман, состоящий только из существительных. Я считаю, что они являются полезными инструментами, но, безусловно, не критичны, их лучше всего рисовать на салфетках после хорошего обеда.
pojo-guy

Ответы:

13

Проще говоря, подумайте о разработке базы данных без ERD, как о строительстве дома без плана здания. Это может быть выполнимо, потому что вы думаете, что простого наложения кирпича друг на друга достаточно, чтобы что-то построить, однако в тот момент, когда кто-то другой берет на себя ответственность за проект, возникает опасность бедствия.

По моему опыту, вы не получите большой пользы от ERD, если не будете использовать их вместе с инструментами CASE (ERWin, MySQL Workbench и т. Д.), Которые дополнительно позволят вам выполнять некоторые действительно полезные операции, такие как прямое и обратное проектирование. Даже без этих функций полезно иметь централизованную схему всей базы данных, потому что иногда ограничений, реализованных в самой базе данных, недостаточно для того, чтобы рассказать полную историю об отношениях между конкретными объектами базы данных.

Вот пример использования MySQL, который, как вы, возможно, знаете, реализует несколько внутренних механизмов хранения, в частности MyISAM и InnoDB. Между ними есть существенные различия, одним из самых важных является то, что MyISAM не поддерживает ограничения. Несмотря на это, MyISAM интенсивно используется для веб-приложений, что означает, что реляционная логика должна быть реализована либо с помощью бизнес-логики (кода приложения), либо иным способом. Проблема в том, что когда вы отправляете инженера ERD с таблицами (сущностями) MyISAM, MySQL будет молча игнорировать ограничения, установленные ERD, и вы получите базу данных, которая не будет четко определять природу отношений между сущностями. Другими словами, после разработки макета базы данных разработчики кода не смогут реализовать правильную бизнес-логику без ERD.

brezanac
источник
1
Если мы пойдем до конца, сравнив «план строительства», мы должны построить систему и никогда не сможем ее изменить, если не будем разрушать все это. Это не будет работать в динамичной среде.
AK
1
Цель «плана строительства» состоит не в том, чтобы закрепить процесс разработки или сам проект, а скорее в том, чтобы всегда предоставлять обзор состояния, в котором находится текущий проект. Никто на самом деле никому не мешает добавлять новые объекты или отношения (следовательно, вносить изменения в план), но другие должны знать об этих изменениях тоже.
Brezanac
5

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

GSB
источник
4

ERD сэкономит вам гораздо больше времени, чем вы думаете. Если вы сделаете все на лету, то застрянете, когда захотите создать соединительные таблицы.

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

У меня есть компания, и мы разрабатываем ERD, никогда не думайте о базе данных без ERD (на самом деле это мой личный эксперимент)

ALH
источник
4

Раньше ERD были более популярными. ИМО они сейчас более или менее опциональны.

В настоящее время некоторые очень успешные команды вообще не беспокоятся о ERD, но предоставляют отличные системы: надежные, производительные и простые в обслуживании в долгосрочной перспективе. Это особенно верно в Agile разработке, когда мы начинаем с малого, с минималистичным набором инструментов.

Конечно, ERD - это хороший способ общения, но ни в коем случае не единственный, а лучший во всех обстоятельствах. Некоторые команды предпочитают другие способы документирования и общения.

В этой отрасли нет общих правил.

Аляска
источник
+1, но какие еще способы документации и связи используются в отношении баз данных?
чудо173
@ miracle173 Хорошая книга: «Гибкие принципы, шаблоны и практики в C #». Также мне нравятся статьи Дэна Норта, посвященные
AK
1
Что вы имеете в виду some teams prefer other ways? Я думаю, что это могло бы закончиться большим количеством отрицательных голосов, если бы был опубликован как ответ на Stackoverflow!
Pmpr
2

Важно разработать дизайн перед написанием производственного кода. Также важно создавать прототипы; базы данных люди разрабатывают прототипы, написав SQL. (Помните, что Фред Брукс сказал о прототипах?)

Графические языки, одним из которых является ER, оказались не очень хорошими в том, чтобы охватить всю семантику базы данных таким простым и понятным способом.

Они также не оказались очень эффективными инструментами связи, кроме как между разработчиками. Но при проектировании баз данных решающее значение имеет не связь между разработчиками; это между разработчиками и экспертами в области (между разработчиками и деловыми людьми).

Object-Role Modeling (ORM) имеет графический язык, но он основан на «фактах» (простых предложениях). Деловые люди могут легко проверить факты. Деловые люди не могут легко проверить диаграмму ER или диаграмму ORM.

Майк Шеррилл 'Cat Recall'
источник
1
+1, но знаете ли вы какие-либо цифры или исследования, подтверждающие ваши утверждения о проблемах общения с использованием графических языков?
чудо173
Я не учусь, поэтому я не пристально слежу за исследованиями. Графический язык, который не может охватить всю семантику базы данных (например, ERD), очевидно, не может передать всю семантику; это часть исследования Терри Хэлпина. Что касается общения с экспертами в предметной области, для этого вам не нужно никаких исследований. Вам просто нужно попытаться объяснить диаграмму ER специалисту по предметной области, который имеет образование только в 8-м классе. Затем сравните этот опыт с попыткой объяснить предложение «Каждый адрес имеет один и только один почтовый индекс». Предложение побеждает каждый раз.
Майк Шеррилл 'Cat Recall'