|  | 
| 
Практический план проектирования БД | |||
|---|---|---|---|
| #18+ Отцы,  Позвольте мне представить на ваш суд свой планчик по проектированию БД среднего масштаба, которые я сделал для себя, изучая Дэйвида М. Крёнке ( «Теория и практика построения БД». 8-е издание ) и проектируя базу для CRM нашей фирмы, на основе изученного. Цель плана - не в создании "новой" методологии. Мне просто нужно выяснить у практиков и теоретиков чего здесь не хватает или что лишнее. Понимаю, что невозможно привести к какому-либо алгоритму такую нелинейную задачу как планирование БД, и всеже мне кажется, что необходим хотя бы самый общий план, для того чтобы избежать хотя бы грубых неточностей. Намеренно избегаю слово “ошибок”, потому как и в самом плане наверняка многие найдут просчеты. Использована модель проектирования «Сущность-Связь» (сверху-вниз), для семантической модели не было достаточно исходных документов. Для эскизов использовались (пригибаю голову пониже ;-) Power Point, для графического оформления модели данных пользователя и как CASE инструмент – MS Visio2002. Карандашом и бумагой - пробовал, но опыта не хватает с первого раза всё правильно нарисовать. И со второго тоже. Итак, Практический план проектирования БД 1. Постановка задачи. Формулировка в письменном виде — цели приложения, основные объекты, операции движения документов между объектами. 2. Интервью с будущими пользователями приложения. Можно по корпоративному мылу, разослать своё описание представления, собрать в кучу ответы и переписать представление. 3. Уточнить требования. 4. Составить первичную модель данных пользователя – User Data Model (UDM), только сущности и их связи: Parent <-- Child. 5. Уточнить UDM: a. определить на UDM слабые сущности, b. определить кардинальные числа. 6. В Database Model Diagram (DMD) сущности представить в виде отношений. 7. Добавить атрибуты отношений. 8. Отношения Parent: определить Primary Key 9. Отношения Parent: добавить IsValid (устаревание/удаление данных) 10. Уточнить с пользователями состав атрибутов и домены аттрибутов, определить необходимость хранения NULL значений (неизвестен, неприменим на данный момент, равен нулю). 11. Создать связи между отношениями (далее, исходя из того что DMD составляется в Visio) a. Протянуть коннекторы Relationship от Child к (-->) Parent b. Определить установку аттрибутов IsRequired для созданных Foreign Key в Child Table c. Установить вид зависимости для слабых сущностей: идентификационная или нет. Если нет - нужно ли каскадированное удаление. d. Установить кардинальность связи. 12. Добавить ограничения на значения доменов атрибутов (проверки, дефолты и т.д.) 13. Протянуть связи между надтипами и подтипами в категориях. 14. Создать отношения пересечений, для связей N:M, протянуть связи. (Нотация – INTS _Сущность1_Cущность2) 15. Создать отношения пересечений для рекурсивных связей, a. создать связи, b. один из Foreign Key в пересечении – выставить как Primary Key. c. Второй FK – необязательный (Nullable), развернуть его связь с Parent наооборот (Verb Prase – is of, Inverse Phrase - has) 16. Проанализировать отношения на нормализацию, в случае необходимости нормализовать. 17. Перепроверить связи и кардинальные числа в DMD сверяясь с UDM. a. Parent <-- Child, направление связи, кардинальности. b. Child -->Parent, FK – required если Child к Parent как N:1(1:1) и обязателен в связи. 18. Добавить описание тернарных связей в Report. 19. Добавить индексы. Проделав все операции, я сделал Validation Logical and Physical модель versus SQL driver - ошибок – 0, что конечно ни о чем не говорит. С уважением, Axl. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 10.07.2003, 13:32 |  | ||
| 
Практический план проектирования БД | |||
|---|---|---|---|
| #18+ Да правильно вроде все. Даже шикарно. Молодец, что столько смог написать. Только вот пункт 1, как правило, дает неверные и неполные данные. И, следовательно, потом все валится.  И опять про слабые сущности. Почитал я про них. И понял, что в правильной базе их не должно быть. Уважаю людей, которые могут все разложить по полочкам. Но лично я делаю пункт 1, а дальше все на автопилоте. Я и слов то многих мудреных не знаю. Что говорит о том, что я не являюсь образцом для подражания. ===== Некрасивый самолет не полетит! (с) Туполев. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 11.07.2003, 22:11 |  | ||
| 
Практический план проектирования БД | |||
|---|---|---|---|
| #18+ 2 Axl: \r Цель плана - не в создании "новой" методологии. \r \r Цель вашего плана, конечно, не создание методологии, но вот цель ваших действий это создание "новой" методологии/процесса проектирования БД. Стоит ли изобретать велосипед? Прочтите книжку Т.Коннолли, К.Бегг и др. "Базы данных: проектирование, реализация и сопровождение. Теория и практика", 2-е изд. - М: изд. "Вильямс", 2000. (ISBN 5-8459-0109-X) там хоть и структурная методология SASD/SDLC (Часть 1, Гл.4. "Планирование, проектирование и администрирование БД" ; Часть 2 "Методология" , Гл.5-12), но это верно вообще и для проектирования БД в контексте ООАП.\r В Как лучше организовать? (стр.1). есть про ТЗ на создание БД и модели. В ПРОЕКТНАЯ ДОКУМЕНТАЦИЯ (ТЭО,ТЗ,ТП,..): содержание, методы и средстваесть ссылки на другие топики, где затрагиваются вопросы (структурных) методологий анализа/проектирования приложений/БД и моделирования/документирования\r \r Мне просто нужно выяснить у практиков и теоретиков чего здесь не хватает или что лишнее. Понимаю, что невозможно привести к какому-либо алгоритму такую нелинейную задачу как планирование БД, и всеже мне кажется, что необходим хотя бы самый общий план, для того чтобы избежать хотя бы грубых неточностей. \r \r Это (привести к алгоритму) и не требуется, если находиться в здравом уме. Любая современная методология/процесс создания ПО (и БД как ее подсистемы) как совокупность деятельностей позволяет "адаптировать" себя, т.е является настраиваемой к конкретному проекту. Тот же RUP, например, есть обязательные деятельности и их артефакты (требования, UC, модель проектирования, модель реализации..), а есть необязательные , но желательны (модель анализа, модель тестирования,..). Это и понятно, что какие-то артефакты (модели, документы) служат для раскрытия основной сути или архитектуры приложения (т.е без таких моделей фиг их поймешь вообще) и какие-то для еще более глубокого раскрытия сути и удобства восприятия (т.е можно и обойтись, если времени и людей нет)\r \r Для эскизов использовались (пригибаю голову пониже ;-) Power Point, для графического оформления модели данных пользователя и как CASE инструмент – MS Visio2002. \r \r MS Visio2002 (без сторонних плагинов) - это вообще дерьмо как средство ER-моделирования если объективно. Сравнения с др.CASE-средствами в Помогите выбрать CASE\r \r Использована модель проектирования «Сущность-Связь» (сверху-вниз), для семантической модели не было достаточно исходных документов. \r \r Про необходимость и связь друг с другом концептуальной, логической и физической моделей данных (МД) смотрите в Как лучше организовать? (стр.1), а также в PowerDesigner vs ERWin (Дата: 2 апр 03, 15:06)\r \r 1. Постановка задачи. Формулировка в письменном виде — цели приложения, основные объекты, операции движения документов между объектами.\r ......... \r \r IMHO нечего добавить или прокомментировать потому что ваше описание очень общее. По поводу самых важных ш.1-3 вообще не ясно. Вы могли бы вместо ш.1-3 написать ш.1 "Получить системные требования". Это было бы гораздо корректнее относительно сегодняшних канонов анализа/проектирования хотя и вообще непонятно, что они такое есть эти требования, как их получать и когда нужно остановиться. См. в Все мы чего-то автоматизируем (стр.2) там есть список литературы (Дата: 20 июн 03, 23:50), в к-рой рассказывается как получать требования, делать их анализ, строить модели чтобы получить архитекутуру. По ш.ш.4-15 вы можете сравнить себя с теми же книгами Т.Коннолли и К.Дейта, в к-рых хорошо описываются деятельности цепочки концептуальная МД -> логическая МД -> физическая МД\r \r Проделав все операции, я сделал Validation Logical and Physical модель versus SQL driver - ошибок – 0, что конечно ни о чем не говорит. \r \r Этот способ говорит только о том, что вы не нарушили ваши (у вас в Visio) правила моделирования такие как уникальность имен объектов, наличие PK, индексов или синтаксис SQL-диалекта. Однако гарантировать то, что вы вообще правильно спроектировали свою БД, например, необходимо и достаточно ее нормализовали можете только вы сами при вашем уровне профессионализма и совести ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 12.07.2003, 23:52 |  | ||
| 
Практический план проектирования БД | |||
|---|---|---|---|
| #18+ Здорово отцы! Очень рад видеть здесь ваши ответы, и как рад видеть что задел что-то в душе (или что там у него) гуру Репликанта. Раз он разразился таким длинным письмом. :-) 2 Репликант. Письмо ваше я сохранил к себе по подушку, буду перечитывать и набираться разуму. Я серьёзно, спасибо за линки и обзор! Как я писал, я не ставил целью создать описание алгоритма проектирования. И тем не менее, изучив своего Д. Кренке до главы о переносе физмодели проекта на СУБД, я пришел к выводу, что определенные последовательности в проектировании есть! Особенно в части касающейся проектирования логической модели на физическую, так как повторяющиеся операции присутствуют на определенных шагах довольно часто. Возможно вы как опытный разработчик даже не осознаете этого, но для меня алгоритм важен, для того чтобы не запутаться и произвести все необходимые операции для каждой сущности. Конечно это нужно делать с головой, кто спорит?! Мне вообщем хотелось просто узнать, не допустил ли я грубых просчетов, прежде чем начинать генерить и дорабатывать скрипты DDL. По поводу первых трех шагов, я согласен описание этих шагов довольно размытое, впрочем ТЗ что я получил от сотрудников фирмы, еще более бестолковое. Не буду касаться процесса его создания, это другой топик с участием в главной роли г-на Репликанта, который я еще не дочитал. Скажу только, что ТЗ(да бросьте какое там ТЗ, просто описание объектов и требуемых аттрибутов) я написал сам и уточнил его у манагеров и части пользователей. В силу того что сложных формул не предвидится и процессы в пределах человеческой логики, надеюсь что этого будет достаточно. Однозначно, придется доделывать после, но тут и самое растолковое ТЗ не поможет, просто потому что я не могу заставить подписаться манагеров под своими словами и доработку нужно будет делать на ходу. Еще одно наблюдение, по прочтении части материалов этого форума, у меня сложилось впечатление, что вообще к ПРОЕКТИРОВАНИЮ БД, обычно два отношения. Одно - стиль Cat2 (системные требования а дальше полет фантазии) и стиль Репликанта (все подробно и по науке, что конечно не исключает полет мысли :) Истина наверно как всегда посредине... Спасибо! 2Cat2 - Спасибо за вашу оценку. Все таки мне непонятно ваше отношение к слабым сущностям. Что ВЫ подразумеваете под тем что их не должно быть? В любом проекте почти все объекты - логически зависимые от других объектов, а независимыми являются только те зависимость которых отслеживать нет необходимости. Это вопрос отношений м/у объектами. К примеру если мы рассматриваем кадровую структуру офиса, и в проекте не предусмотрена связь офиса с головным офисом, то он и будет независимой сущностью, от которой будут зависеть остальные более мелкие сущности (отдел, начальник, подчиненный и т.д.) Эти сущности и будут слабыми. Как мне кажется слабые сущности могут отсутствовать в проекте только если в проекте одно громадное денормализованное отношение. Г-н Репликант, или я не таки-не прав? С уважением, Axl ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 15.07.2003, 12:08 |  | ||
| 
Практический план проектирования БД | |||
|---|---|---|---|
| #18+ Axl. Про сущности - это точно, к Репликанту. Я даже и спроить не буду. Если Вы говорите, что так правльно, значит правильно. Только я вот не понимаю, каким боком это может помочь  А вот про методы проектирования - истина по краям. Нельзя в одну телегу впрячь интуицию и техпроцесс. Причем, я утверждаю, что правильно организованый техпроцесс ВСЕГДА даст результат. Впрочем, его организация вешь все равно сильно интуитивная. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 15.07.2003, 20:00 |  | ||
| 
Практический план проектирования БД | |||
|---|---|---|---|
| #18+ 2 Axl:  Еще одно наблюдение, по прочтении части материалов этого форума, у меня сложилось впечатление, что вообще к ПРОЕКТИРОВАНИЮ БД, обычно два отношения. Одно - стиль Cat2 (системные требования а дальше полет фантазии) и стиль Репликанта (все подробно и по науке, что конечно не исключает полет мысли :) Истина наверно как всегда посредине... Создавать программные системы надо качественно и эффективно насколько это необходимо их заказчику. Вот единственная истина. А все методологии ("науки") и технологии имеют своей целью только помочь добиться этих показателей. Что же "все подробно и по науке" то в чем то вы правы, я никогда не изобретаю велосипед потому что, во-первых, это глупо, а во-вторых, просто времени на это нет и неэффективно это. Также это по своей сути и неуважительно к себе - "забить" на ИТ-науку и мировой опыт разработчиков, пытаясь сказать собственное "я". Творческие же способности надо проявлять совсем в другом, например, в поиске оптимальных решений ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 15.07.2003, 23:52 |  | ||
|  | 

| start [/forum/topic.php?fid=32&fpage=179&tid=1546908]: | 0ms | 
| get settings: | 11ms | 
| get forum list: | 14ms | 
| check forum access: | 4ms | 
| check topic access: | 4ms | 
| track hit: | 42ms | 
| get topic data: | 13ms | 
| get forum data: | 3ms | 
| get page messages: | 49ms | 
| get tp. blocked users: | 2ms | 
| others: | 15ms | 
| total: | 157ms | 

| 0 / 0 | 
