Существует концептуальная основа для проектирования баз данных.
В классическом проектировании баз данных существует три модели: концептуальная, логическая и физическая.
Концептуальная модель возникает из анализа требований и развивается по мере развития основного предмета или понимания предмета. Концептуальная модель связывает элементарные данные с точки зрения формы и семантики, но не занимается такими вопросами, как составление таблицы.
Логическая модель использует реляционную модель данных. Он может быть выведен из концептуальной модели, но он также имеет дело с композицией отношений. Нормализация и другие вопросы композиции вступают в игру здесь. Логическая модель предвидит дизайн таблицы, а также запросы и обновления, которые будет выполнять приложение.
Физическая модель реализует отношения в виде таблиц, а также добавляет все другие функции, такие как индексы, табличные пространства и т. Д., Необходимые для фактического построения базы данных. Он основан на логической модели, но в игру вступают объем данных, нагрузка, производительность и дисковое пространство.
Это звучит долго и утомительно, но на самом деле это быстро, если вы знаете, как это сделать. Все это можно сделать за несколько недель, в то время как остальная часть команды все еще обсуждает функциональные спецификации. Для действительно небольшого проекта (6 таблиц, 50 столбцов) это можно сделать за несколько дней, всего лишь карандашом и бумагой. Для более крупных проектов существуют инструменты, которые делают дизайн более автоматическим, менее подверженным ошибкам и легко программируемым.
Но что происходит, когда вы обнаруживаете, что концептуальная модель была неточной или неполной, а две другие модели и саму базу данных необходимо изменить? Вот где Независимость данных приходит на помощь. Независимость данных делает для проектирования баз данных то же самое, что инкапсуляция для проектирования объектов. А именно, он предотвращает распространение незначительной корректировки в одном месте по всем объектам приложения. Объекты зависят только от данных, которые они используют.
Если новая схема должна быть добавлена в схему, шансы того, что любое приложение будет сломано, исчезающе малы. Даже если необходимо изменить существующую таблицу, запросы, использующие только старые столбцы, не увидят никакой разницы. Даже когда объекты зависят от изменения, вы все равно можете присвоить измененной таблице новое имя, а затем создать представление со старым именем, которое будет выглядеть так, будто старая таблица все еще там.
И физическая независимость данных почти полна в хорошей СУБД. Вы можете реорганизовать данные, добавлять и удалять индексы и т. Д., И вам не нужно менять какие-либо приложения.
Короче говоря, управление изменениями может быть блестяще выполнено с использованием действительно хороших продуктов СУБД. К сожалению, многие администраторы баз данных и программисты не знают, как адекватно использовать эти функции СУБД, хотя они существуют уже много лет.