- PVSM.RU - https://www.pvsm.ru -
Итак, поискав на хабре информацию по проектированию БД, и не найдя ничего более или менее вразумительного, я решил написать об этом небольшую статью.
Проектирование базы данных сводится к трем последовательным этапам:
Ниже я предлагаю ознакомиться с ними более детально.
На этапе концептуально проектирования мы создаем концептуальную модель данных, для исходных требований, которая не зависит от типа СУБД, прикладных программ, языка программирования и др. Также концептуальная модель данных должна быть понятна не только разработчику, но и простому человеку.
Наиболее широко используемым методом создания концептуальной модели является модель «сущность — связь» [1] (Entity – Relationship model, ER – модель).
Суть этой модели состоит в том, что рассматриваемая область представляется в виде сущностей, и связей между ними.
Сущность это некий объект реального мира, информацию о котором нужно сохранить в базе данных. Например сотрудники, компьютеры, велосипеды, договоры и т.д.
Сущности, в свою очередь делятся на сущности слабого и сильного типов, сущности сильного типа, это те, которые могут существовать независимо от других, например сущность студенты — сильная, а родственники студентов — слабая, т.к. она не может существовать отдельно от студентов.
Например, пусть мы имеем следующий исходный набор данных при разработке базы данных «Склад товаров сети магазинов»:
Информация о товарах:
Информация о поставщиках:
Выдача товаров магазинам:
Из этих данных можно выделить три сущности:
Построим т.н. ER диаграмму:
Примечание: Существует множество схем представления ER-диаграмм, я выбрал схему предложенную П.Ченом, сущности на диаграммах обозначаются прямоугольниками, связываются с их атрибутами линиями, а связи между сущностями обозначаются ромбами.Ключевые атрибуты подчеркнуты.Указывается тип связи 1:1, или 1:N (один ко многим), N:N (многие ко многим)
На этапе логического проектирования мы переходим от полученной концептуальной модели, ко конкретным отношениям (таблицам) базы данных. В частности, на данном этапе проводится нормализация отношений [2].
Продолжим на том же примере. В полученной ER — модели у нас получилась связь многие ко многим между товарами и поставщиками (т.к. один товар может поставляться несколькими поставщиками, и один поставщик может поставлять несколько товаров), это приводит к увеличению объема обеих таблиц и повторению данных. Разобьем две сущности на три таблицы:
в результате получим три отношения со связями один ко многим между товарами и поставками товаров и поставщиками и поставками товаром.Так же эти три отношения находятся в НФБК [3].
Сущность филиалы, в том виде, в котором она есть уже уже удовлетворяет НБФК:
Филиалы ( Номер филиала, название товара, дата заказа, количество)
Таким образом, мы получили четыре отношения, из трех сущностей, при задаче нормализации полученных отношений до НФБК. Количество получившихся отношений, зависит целиком от условий поставленной задачи.
На этом этапе выбирается СУБД, в которой реализовываются полученные в предыдущем пункте отношения, разрабатывается пользовательский интерфейс.
Подводя итоги, замечу, что подобный, последовательный подход сокращает время при проектировании достаточно больших баз данных, в которых легко запутаться проектируя «наскоком» или «интуитивно», конечно для каждого понятие большие очень субъективно, но используя подобный подход при проектировании любых баз данных, ее качество получится точно не хуже чем при проектировании «интуитивно».
Спасибо за внимание.
Автор: GlebkaF
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/bazy-danny-h/24840
Ссылки в тексте:
[1] «сущность — связь»: http://ru.wikipedia.org/wiki/ER-%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85
[2] нормализация отношений: http://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D0%B0
[3] НФБК: http://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D0%B0_%D0%91%D0%BE%D0%B9%D1%81%D0%B0_%E2%80%94_%D0%9A%D0%BE%D0%B4%D0%B4%D0%B0
[4] Источник: http://habrahabr.ru/post/165851/
Нажмите здесь для печати.