Нормальные формы (НФ) 1 НФ: 2 НФ:

advertisement
Нормальные формы (НФ)
(#D, #C, Qty, Адрес)
1 НФ: Любой неключевой атрибут должен зависеть от всего ключа, и
2 НФ: не может зависеть от части ключа.
(#D, #C, Qty)
( #C, Qty, Адрес)
3 НФ:
(Т.Н.(табельный номер, ключ), Отдел, Адрес)
Требование 3 НФ: В реляционной таблице не должно быть зависимостей от ключа.
Декомпозиция:
(Т.Н. , Отдел)
(Т.Н. , Адрес)
НФБК (BK):
Ключи не должны пересекаться.
(#П(Поставщик), #D(компонент), Имя, Кол-во)
4 НФ:
(StudentId, ClassId, TeacherId)
(StudentId, Name, …)
(ClassId, Name, … )
Одному атрибуту соответствует множество значений других атрибутов. (Один ко многим)
Требование: не должно быть внутри таблицы несколько отношений многих ко многим.
Декомпозиция:
(StudentId, ClassId)
(TeacherId, ClassId)
5 НФ:
Требование: таблица должна быть минимально необходимой, т.е. нельзя ее представить
как декомпозицию более простых таблиц.
Процесс нормализации всегда сводится к декомпозиции.
SQL
SQL не чувствителен к регистру.
Пример запроса:
SELECT * from T
Выбрать все строки из таблицы Т
Запрос отправляется на сервер, обрабатывается и возвращает данные клиенту.
Тексты запросов SQL можно хранить на сервере вместе с данными (например, длинные
запросы, которые можно вызывать короткими).
(+)Удобство хранения запросов на сервере: не нужно обновлять все программы клиентов
одновременно.
(-) SQL является ограниченным языком. При этом есть необходимость расширения
стандартного SQL (например, до PL/SQL для Oracle и др.)
Команды CRUD(Create, Run, Update, Delete) для SQL (DML):
Выборка:
SELECT <что> <откуда> <условия>
SELECT A, B, from Table WHERE B>0
Добавление:
INSERT INTO Table (A,B) values (1,2)
Удаление:
DELETE from Table where A<B
Обновление:
UPDATE Table SET A=1 where B=0
SQL:
-DML (Data Manipulation Language)
-DDL (Date Definition Language)
A B C
Значения любого атрибута может быть либо инициализировано, либо нет.
NULL – значение атрибута не установлено.
CHAR(CHARACTER) – строковый тип, имеет максимальную длину.
CREATE Table T AS (Name CHAR(80) PAD WITH BLANK) -Макс. Длина строки 80
символов, пустые (незаполненные) символы заполняются пробелами.
VARCHAR хранит внутри длину строки.
BIT (10) – битовый тип. BITVAR – битовая строка переменной длины.
Целочисленные типы.
NUMERIC – цифровое значение.
DEC(DECIMAL) – десятичное число.
SMALLINT – короткое целое.
Вещественные числа:
FLOAT
REAL
DOUBLE
PRECISION
Дата и время:
DATE
TIME
TIMESTAMP
INTERVAL
Полная дата определяется как:
dd.mm.yyyy.hh:mm:ss.dd
BLOB(Binary Large Objects Byte) – байтовая последовательность.
LARGE VAR CHAR – аналог.
CBLOB – байтовая последовательность текста ограниченной длины. TEXT, MEMO.
NATIONAL CHAR CP1251 – кодировка шрифта.
CHAR (80) NO PAD – незаполненные символы не заполняются.
CHAR (80) PAD(LEFT, RIGHT) SPACE – заполнить пробелами(слева, справа).
|| - соединение(объединение) строк
SUBSTRUNG – выделить подстроку.
(R,L)TRIM – обрезание пробелов (справа, слева).
UPPER – перевод в верхний регистр
LOWER – перевод в нижний регистр
POS – вхождение в позицию строки.
LEN(S) – длина строки.
LIKE – сравнение с образцом. Пример: SELECT * from T where A LIKE ‘AB%’
% или * означает подстроку любой длины, в том числе нулевой.
При описании временного типа можно использовать суффикс WITH TIMEZONE.
Существует возможность конвертации строки даты и времени или ее части во временной
тип.
Временные типы доступны для вычитания: интервал=дата2-дата1.
К временным типам применимы операции сложения, вычитания, умножения на число.
CREATE TABLE Tablename AS (Name char(80) DEFAULT ‘AB’, Id int)
//Создать таблицу T Tablename с доменами различных типов данных, имеющими значения
по умолчанию.
NOT NULL(NULL, VALUE (IS) NOT NULL), – значение не может быть
неинициализированным. IS NULL – неинициализировано.
UNIQUE – уникальное значение.
Временная таблица удаляется по завершении сеанса с пользователем.
Related documents
Download