Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Пример проектирования реляционной базы данных
Пример 4 Задание: преобразовать модель «сущность-связь» из примера 1 в реляционную модель данных. Провести нормализацию таблиц. Проектирование реляционной базы данных заключается в определении структуры таблиц, связей между ними, доменов и ограничений целостности. На рис.11 показана схема связи реляционных таблиц. Она получена из модели «сущность-связь» (рис.8) по правилам, изложенным выше. Каждой сущности соответствует отдельная таблица: сущности АВТОМОБИЛЬ – таблица AUTO, сущности ВОДИТЕЛЬ – таблица DRIVER, сущности РАСПИСАНИЕ – таблица SHEDULE, сущности ЗАЯВКА – таблица REQUEST. Моделирование взаимоисключающих подтипов ОРГАНИЗАЦИЯ и ЧАСТНОЕ_ЛИЦО выполнено по третьему варианту правила (см. п.4.3, правило 8): таблица CUSTOMER (ЗАКАЗЧИК) содержит атрибуты, общие для обоих подтипов (название Name и телефон Phone). Первичный ключ таблицы CUSTOMER суррогатный – столбец ID_Cust. Значения этого столбца являются внешним и первичным ключом одновременно в таблицах PERSON и ORGANIZATION, моделирующих подтипы сущностей ЧАСТНОЕ_ЛИЦО и ОРГАНИЗАЦИЯ. Например, для регистрации заказчика Сидорова П.И. в таблице CUSTOMER добавляется строка (315; Сидоров П.И.; NULL). 315 – его регистрационный номер, NULL – телефона нет. В таблице PERSON добавляется строка (315; 19.02.1964; 38 00; 169805). Число 315 является ссылкой на строку таблицы CUTOMER, и первичным ключом таблицы PERSON. Моделирование связей М:1 (в том числе связи 2:1 между водителем и автомобилем) происходит путем добавления внешних ключей в таблицу, со стороны которой кардинальное число связи “М”. Если связь обязательная, внешний ключ NOT NULL, иначе – NULL.
Рис.11. Схема связи таблиц реляционной модели. Первичные ключи таблиц обозначены PK, внешние FK. Связи по внешним ключам имеют тип M:1 (¥:1). Обязательность связи со стороны сущности, где кардинальное число равно «1», никак не моделируется в реляционной модели (как, например, связь ЗАКАЗ со стороны сущности ЗАКАЗЧИК). Проектирование доменов (про домены прочтите п.6.2 на с.41) В каждый домен для нашего примера входит один первичный ключ и все внешние ключи, ссылающиеся на него.
Примечание: модели автомобилей можно записывать в виде строки символов («Газ», «Камаз»). Недостатки этого способа проявляются в следующем: 1) если при оформлении заявки записать название модели, допустим, заглавными буквами («ГАЗ»), то поиск свободных автомобилей данной марки не даст результатов, так как строки «Газ» и «ГАЗ» не равны; 2) строка занимает больше байтов памяти, чем число. Рациональнее будет создать дополнительную таблицу МОДЕЛИ_АВТОМОБИЛЕЙ (Models) со столбцами (КодМодели, НазваниеМодели), и везде вместо названия модели записывать ее код. Таким образом, домен TModelAuto будет числовым.
Таблица [Models]
Таблица [Auto]
Таблица [Driver]
*: не более двух строк таблицы могут иметь равные значения столбца RegNumAuto. Таблица [Shedule]
Таблица [Customer]
В ER-модели подтипы сущностей ОРГАНИЗАЦИЯ и ЧАСТНОЕ_ЛИЦО идентифицировались по-разному. Идентификатором организации был атрибут ИНН, идентификатором человека (СерияПаспорта, НомерПаспорта) (рис.8). При переходе к реляционной модели в таблицы PERSON и ORGANIZATION был добавлен новый первичный ключ Cust_ID, идентифицирующие атрибуты сущности превратились в обычные столбцы с ограничением Unique.
Таблица [Person]
Таблица [Person]
Date: 2016-07-25; view: 1037; Нарушение авторских прав |