суббота, 1 марта 2014 г.

СУБД. Реляционные Базы Данных. Нормализация БД


Смотрим презентацию К.Ю.Полякова (слайды 37 - 45)
В середине ХХ века при проектировании и эксплуатации разработанных БД возникли следующие задачи:
  • Разработать строгое математическое описание баз данных, независимое от способа хранения данных;
  • Разработать методы управления этими данными
В 1970 г Эдгар Кодд, который работал в фирме IBM, предложил новую модель данных , основанную на следующих идеях:
  • Все данные представляют свойства некоторых объектов;
  • Объекты делятся на классы;
  • Данные о некотором объекте — это набор свойств (атрибутов). Каждое свойство задается парой «название — значение».
Математическая теория Кодда никак не связана с тем, как хранятся данные. Однако на основании теории Кодда легко строить табличные БД.
Действительно:
  • Каждая таблица описывает один класс объектов;
  • Порядок расположения полей в таблице не имеет значения;
  • Все значения одного поля относятся к одному типу данных;
  • В таблице нет двух одинаковых записей;
  • Порядок записей в таблице не определен

Поэтому можно дать следующее определение:

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

  1. Любое поле должно быть неделимым 
  2. Любое неключевое поле должно зависеть от ключа таблицы. Если в таблице есть поле, которое не зависит от ключа этой таблицы, значит, это поле описывает другой класс объектов. Это поле нужно вынести в другую таблицу. А между таблицами установить связь. 
  3. Не должно быть одинаковых по смыслу полей. 
  4. Не нужно хранить данные, которые могут быть вычислены.

На практике эти принципы можно преобразовать в план
  1. Для каждого класса объектов создавать отдельную таблицу.
  2. При построении каждой таблицы вводим суррогатный ключ. Для всех суррогатных ключей выбираем тип INTEGER 
  3. Для каждой таблицы определяем типы данных каждого поля
  4. Связываем таблицы связями 1:N. Не забудьте! Связи устанавливаются между однотипными полями. 
В результате нормализации  получаем  схему БД, состоящую из нескольких таблиц




Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.