дочерняя и родительская таблицы

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
 

Создание дочерней таблицы

Скрыть

Показать

Копировать
  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
 

Диаграмма

Удаление

Первыми должны удаляться дочерние таблицы.
Последними должны удаляться родительские таблицы.
Скрыть

Показать

Копировать
  Script.sql  
--выбор базы
USE zzz
GO
--первыми должны удаляться дочерние таблицы
DROP TABLE Book
--последними должны удаляться родительские таблицы
DROP TABLE Author