Урок 4. Проектирование БД.

Видеоурок, на котором базируется данный пост - Проектирование БД. Для лучшего усвоения информации и более подробного изучения SQL настоятельно рекоммендем Вам просмотреть видеокурс SQL Essential.


Нормализация

Нормализация таблиц - это формальный аппарат ограничений на формирование таблиц, который позволяет устранить дублирование данных, обеспечивает непротиворечитьсть хранимых в базе данных, уменьшает трудозатраты на ведение базы данных (а именно ввод и корректировку данных).

Существует так называемые "нормальные формы" таблиц. Нормальная форма - результат нормализации таблицы. На самом деле их реально много, но мы будем рассматривать только 3 первых нормальных формы.

Каждая нормальная форма должна включать в себя правило предыдущих.


1NF

1NF - Первая нормальная форма - отсутствие повторяющихся данных.

Представим ситуацию. У нас есть таблица Orders с заказами:

create table Orders
(
	OrderID int identity primary key,
	OrderDate date null,
	CustomerID int not null,
	CustomerName char(40) not null,
	CustomerAddress char(100) not null,
	OrderedItem char(50) not null
)
go

В данном случае мы видим, что некоторые поля в колонках CustomerID, CustomerName и CustomerAddress дублируются.

Что бы избежать подобного (тобишь привести нашу таблицу к первой нормальной форме), мы можем воспользоваться ссылками, обеспечивающими уникальность полей, а именно - Primary/Foreign Keys. На прошлом уроке мы разбирали первичные и внешние ключи, по этому у нас эта задача не должна вызывать какие-либо сложности. Итак, разобьём нашу табличку Orders на 2 таблички: Customers и Orders:

drop table Orders
go

create table Customers
(
CustomerID int identity primary key,
CustomerName char(40) not null,
CustomerAddress char(100) not null
)
create table Orders
(
OrderID int identity primary key,
OrderDate date null,
CustomerID int not null foreign key references Customers(CustomerID),
OrderedItem char(50) not null
)
go

В результате мы получаем 2 таблички:

Всё. Таким образом мы привели нашу табличку к первой нормальной форме.