Строки таблицы также называют кортежами. Каждый кортеж – это набор данных об одном экземпляре объекта.



 

Существуют различные нотации (способы графического отображения) концептуальных моделей – ER-диаграммы. Одна из самых известных – нотация Питера Чена. В ней каждая сущность изображается в виде прямоугольника, атрибут – овала, отношение – ромба. Например, попробуем построить возможный вариант фрагмента схемы БД многопользовательской игры Counter Strike.

 

 

 

 

Здесь каждый игрок обладает атрибутами «Имя» и «Внешний вид», у команды есть название и концепция игры, игрок принадлежит к конкретной команде (связь «1 команда – много игроков»), также он может покупать оружие (связь «много оружия – много игроков»), для которого заданы название и стоимость.

Логическое проектирование

 

На этом этапе создается схема данных с привязкой к конкретной модели данных, например, реляционной, иерархической, или сетевой.

Создадим схему реляционной БД. Для этого будем использовать CASE-средство Erwin Data Modeler.

 

Эта схема – всё ещё ER-модель, она содержит только логические данные, без какой-либо физической структуры. Однако теперь для каждой сущности определены первичные (находятся в верхней части каждой сущности, отделены чертой) и внешние (отметка FK) ключи. Для каждого атрибута может быть указан тип данных, пока довольно абстрактный – текст, число, без указания типа конкретной СУБД.

Отношения 1:М на схеме отображаются в виде линий, связывающих первичный и внешний ключи (например, связь «Команды.ID команды – Игроки.ID команды (FK)). Отношение М:М представлено в виде новой сущности – «Покупка».

 

Физическое проектирование

 

Физическое проектирование – создание схемы базы данных для конкретной СУБД. Появляются ограничения на именование объектов базы данных, ограничения на поддерживаемые типы данных и т.п. Общая структура схемы практически не меняется.

Физическая схема – это уже схема реальной БД. Сущности превращаются в таблицы, атрибуты – в поля таблиц. ERwin позволяет транслировать созданную схему на сервер выбранной СУБД.

Нормализация базы данных

 

Нормализация – приведение БД к правилам, которые помогают сохранить её целостность и удалить избыточные данные. Правила называют также нормальными формами. Всего известно 8 нормальных форм.

 

1. Первая нормальная форма (1NF)

2. Вторая нормальная форма (2NF)

3. Третья нормальная форма (3NF)

4. Нормальная форма Бойса-Кодда (BCNF)

5. Четвертая нормальная форма (4NF)

6. Первая нормальная форма (5NF)

7. Доменно-ключевая нормальная форма (DKNF)

8. Шестая нормальная форма (6NF)

 

Наиболее часто базы данных приводят к третьей нормальной форме. Дело в том, что с каждой новой НФ увеличивается количество атрибутов и таблиц в БД, в итоге – возрастает сложность запросов и уменьшается скорость работы. Существует такое понятие, как денормализация – это приведение структуры базы данных в состояние, не соответствующее критериям нормализации, с целью увеличения её производительности.

Рассмотрим подробно первые три нормальные формы.

 

1. Первая нормальная форма.

 

· Все атрибуты должны быть атомарны, т.е. каждое поле каждой записи должно содержать неделимое значение (при любом делении атрибут теряет смысл).

· Не должно быть повторяющихся атрибутов.

· Каждая таблица должна содержать первичный ключ.

 

Рассмотрим таблицу «Библиотека». В ней хранятся данные о читателях библиотеки. Что делать, если понадобится поиск по фамилии? Неатомарные значения можно разбивать программно, однако удобнее сделать это сразу в БД. Также каждый читатель может иметь несколько номеров телефонов (сколько – заранее не известно), этот атрибут следует перенести в отдельную сущность. Приведём БД к 1НФ.

 

 

2. Вторая нормальная форма. Выполняется первая нормальная форма; неключевые поля должны зависеть от всего первичного ключа таблицы.

 

При выдаче каждой новой книги в таблице «Библиотека» приходится полностью дублировать данные о читателе, который её взял. Чтобы избежать избыточности данных, разобьём сущность «Библиотека» на 2 сущности – «Читатели» и «Выдача книг».

 

 

Обратите внимание на сущность «Выдача книг». Название книги зависит от кода книги, но не зависит от кода читателя и даты выдачи. В итоге название книги будет повторяться для каждой новой выдачи книги разным читателям. Перенесем атрибут «Название книги» в отдельную сущность «Книги».

 

 

 

Ключ таблицы «Книги» является подмножеством ключа таблицы «Учет книг».

 

3. Третья нормальная форма. Выполняется вторая нормальная форма; атрибуты не зависят ни от чего, кроме первичного ключа.

 

В сущности «Читатели» почтовый индекс зависит от названия города, в котором живет читатель, название города – от кода читателя. Появляется транзитивная зависимость «Почтовый индекс» - «Город» - «Читатель». Для разных читателей город может повторяться, значит, будет повторяться и индекс, информация станет избыточной. При этом, если не введено название города, нельзя ввести в БД почтовый индекс.

Перенесем индекс и название города в отдельную сущность «Города».

 

 


 

 

В результате всех преобразований и приведения к 3НФ в БД «Библиотека» вместо одной сущности появилось пять.

 

 

 

3НФ можно описать следующим образом:

 


Дата добавления: 2018-06-27; просмотров: 354; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!