Primary Key (первичный ключ) — это столбец, значение которого однозначно идентифицирует уникальность строки и предоставляет ссылку для связи с другими таблицами.
Составной первичный ключ — это совокупность нескольких столбцов, значения которых однозначно идентифицирует уникальность строки и предоставляет ссылку для связи с другими таблицами.
Тип столбца внешнего ключа дочерней таблицы должен совпадать с типом столбца первичного ключа в родительской таблице.
Значение столбца внешнего ключа дочерней таблицы должен совпадать со значением первичного ключа в родительской таблице.
Родительская таблица (таблица-справочник) должна содержать только уникальные записи, не допускать их повторений.
Составной первичный ключ — это совокупность нескольких столбцов, значения которых однозначно идентифицирует уникальность строки и предоставляет ссылку для связи с другими таблицами.
PRIMARY KEY(столбец1, столбец2, ... столбецN)Foreign Key (внешний ключ) — это столбец в дочерней таблице, который ссылается на первичный ключ в родительской справочник таблице.
Тип столбца внешнего ключа дочерней таблицы должен совпадать с типом столбца первичного ключа в родительской таблице.
Значение столбца внешнего ключа дочерней таблицы должен совпадать со значением первичного ключа в родительской таблице.
Родительская таблица (таблица-справочник) должна содержать только уникальные записи, не допускать их повторений.
Создание родительской таблицы
Script.sql
/*РОДИТЕЛЬСКАЯ ТАБЛИЦА-СПРАВОЧНИК*/ --выбор базы USE zzz GO --создание таблицы IF NOT EXISTS( SELECT name FROM sys.tables WHERE name = 'Author' ) CREATE TABLE Author ( IDAuthor INT NOT NULL PRIMARY KEY IDENTITY(1, 1), Name NVARCHAR(50) NOT NULL, ) --вставляем данные INSERT INTO Author(Name) VALUES (N'Пушкин А.С.'), (N'Лермонтов М.Ю.'), (N'Гоголь Н.В.') --вывод данных SELECT * FROM Author
/*РОДИТЕЛЬСКАЯ ТАБЛИЦА-СПРАВОЧНИК*/ --выбор базы USE zzz GO --создание таблицы IF NOT EXISTS( SELECT name FROM sys.tables WHERE name = 'Author' ) CREATE TABLE Author ( IDAuthor INT NOT NULL PRIMARY KEY IDENTITY(1, 1), Name NVARCHAR(50) NOT NULL, ) --вставляем данные INSERT INTO Author(Name) VALUES (N'Пушкин А.С.'), (N'Лермонтов М.Ю.'), (N'Гоголь Н.В.') --вывод данных SELECT * FROM Author
Создание дочерней таблицы
Script.sql
/*ДОЧЕРНЯЯ ТАБЛИЦА*/ --выбор базы USE zzz GO --создание таблицы IF NOT EXISTS( SELECT name FROM sys.tables WHERE name = 'Book' ) CREATE TABLE Book ( IDBook INT NOT NULL PRIMARY KEY IDENTITY(1, 1), /* создание внешнего ключа, который ссылается на первичный ключ родительской таблицы */ IDAuthor INT NOT NULL FOREIGN KEY REFERENCES Author(IDAuthor), Name NVARCHAR(1000) NOT NULL, Amount INT NOT NULL, Price MONEY NOT NULL ) --вставляем данные INSERT INTO Book(IDAuthor, Name, Amount, Price) VALUES (3, N'Мертвые души', 5, 10.25), (1, N'Дубровский', 10, 12.45), (3, N'Вечера на хутрое', 15, 13.85), (2, N'Мцыри', 20, 18.15), (1, N'Онегин', 25, 21.70) --вывод данных SELECT * FROM Book
/*ДОЧЕРНЯЯ ТАБЛИЦА*/ --выбор базы USE zzz GO --создание таблицы IF NOT EXISTS( SELECT name FROM sys.tables WHERE name = 'Book' ) CREATE TABLE Book ( IDBook INT NOT NULL PRIMARY KEY IDENTITY(1, 1), /* создание внешнего ключа, который ссылается на первичный ключ родительской таблицы */ IDAuthor INT NOT NULL FOREIGN KEY REFERENCES Author(IDAuthor), Name NVARCHAR(1000) NOT NULL, Amount INT NOT NULL, Price MONEY NOT NULL ) --вставляем данные INSERT INTO Book(IDAuthor, Name, Amount, Price) VALUES (3, N'Мертвые души', 5, 10.25), (1, N'Дубровский', 10, 12.45), (3, N'Вечера на хутрое', 15, 13.85), (2, N'Мцыри', 20, 18.15), (1, N'Онегин', 25, 21.70) --вывод данных SELECT * FROM Book
Диаграмма
Удаление
Первыми должны удаляться дочерние таблицы.
Последними должны удаляться родительские таблицы.
Последними должны удаляться родительские таблицы.
Script.sql
--выбор базы USE zzz GO --первыми должны удаляться дочерние таблицы DROP TABLE Book --последними должны удаляться родительские таблицы DROP TABLE Author
--выбор базы USE zzz GO --первыми должны удаляться дочерние таблицы DROP TABLE Book --последними должны удаляться родительские таблицы DROP TABLE Author