
- •Оглавление.
- •Введение.
- •Спецификация требований.
- •Формы первичных документов.
- •Концептуальное проектирование. Создание er-модели предметной области.
- •Логическое проектирование. Построение и проверка реляционной модели данных.
- •Исключение из концептуальной модели особенностей несовместимых с реляционной моделью.
- •Формирование набора отношений.
- •Реляционная схема.
- •Определение ограничений целостности.
- •Физическое проектирование и реализация базы данных в ms sql Server. Определение состава и структуры таблиц.
- •Реализация ограничений целостности.
- •Проектирование и разработка пользовательских представлений.
- •Заключение.
- •Список используемых источников.
Логическое проектирование. Построение и проверка реляционной модели данных.
Для построения логической модели базы данных выбран реляционный тип базы данных.
Исключение из концептуальной модели особенностей несовместимых с реляционной моделью.
На данном этапе производится устранение из концептуальной модели сложных связей, двухсторонних связей, рекурсивных связей и многозначных атрибутов. В результате проверки вышеуказанных типов связей не было обнаружено. Многозначных атрибутов также не обнаружено.
Формирование набора отношений.
Для построения реляционной схемы на этапе логического моделирования, нужно определить набор отношений, необходимо для представления сущностей, связей и атрибутов, выявленных в процессе концептуального проектирования. В результате были определены следующие отношения:
book_lending (book_lend_id, library_card_id, edition_id, lending_date, delivery_date_fact, delivery_date_plan, penalty);
Первичный ключ — book_lend_id;
Внешние ключи: library_card_id ссылается на library_card (library_card_id), edition_id ссылается на edition (edition_id);
Альтернативные ключи: отсутствуют;
Производные атрибуты: penalty ((delivery_date_fact – delivery_date)*edition_format.format_penalty).
edition (edition_id, edition_name, edition_author, edition_genre_id, edition_format_id, edition_pubhouse_id, edition_year, edition_count, edition_biblfeatures, edition_number)
Первичный ключ — edition_id;
Внешние ключи: edition_genre_id ссылается на genre (genre_id), edition_format_id ссылается на edition_format (format_id), edition_pubhouse_id ссылается на publishing_house (pubhouse_id);
Альтернативные ключи: отсутствуют;
Производные атрибуты: отсутствуют.
genre (genre_id, genre_name)
Первичный ключ — genre_id;
Альтернативные ключи: отсутствуют;
Производные ключи: отсутствуют.
edition_format (format_id, format_name, format_penalty);
Первичный ключ — format_id;
Альтернативные ключи: отсутствуют;
Производные ключи: отсутствуют.
publishing_house (pubhouse_id, pubhouse_name);
Первичный ключ — pubhouse_id;
Альтернативные ключи: отсутствуют;
Производные ключи: отсутствуют.
library_card (library_card_id, library_card_number, reader_surname, reader_first_name, reader_middle, reader_address, reader_phone, reader+pass_s, reader_pass_n);
Первичный ключ — library_card_id;
Альтернативные ключи: reader_card_number;
Производные атрибуты: отсутствуют.
Была проведена проверка соответствия всех отношений требованиям Нормальной Формы Бойса-Кодда. В ходе проверки было установлено, что для каждого отношения каждая её нетривиальная и неприводимая слева функциональная зависимость имеет в качестве своего детерминанта потенциальный ключ.
Также была проведена проверка соответствия отношений требованиям пользовательских транзакций. Все отношения данным требованиям соответствуют.
Реляционная схема.
Определение ограничений целостности.
Были определены следующие ограничения целостности:
book_lending: внешний ключ library_card_id ссылается на library_card (library_card_id) ON UPDATE CASCADE ON DELETE NO ACTION
book_lending: внешний ключ edition_id ссылается на edition (edition_id) ON UPDATE CASCADE ON DELETE NO ACTION
edition: внешний ключ edition_genre_id ссылается на genre (genre_id) ON UPDATE CASCADE ON DELETE NO ACTION
edition: внешний ключ edition_format_id ссылается на edition_format (format_id) ON UPDATE CASCADE ON DELETE NO ACTION
edition: внешний ключ edition_pubhouse_id ссылается на publishing_house (pubhouse_id) ON UPDATE CASCADE ON DELETE NO ACTION
book_lending: [lending_date]<[delivery_date_fact] OR [delivery_date_fact]=NULL
book_lending: [lending_date]<[delivery_date_plan] OR [delivery_date_plan]=NULL
edition_format: [format_penalty]>=(0)
library_card: [reader_pass_n] like '[0-9][0-9][0-9][0-9][0-9][0-9]'
library_card: [reader_pass_s] like '[0-9][0-9][0-9][0-9]'