Заданиевнешнихключейвсреде Microsoft SQL Server Management Studio




Рассмотрим базу данных «Продажа цветов», состоящую из трех таблиц: «Цветок», «Продажа», «Продавец»:

Цветок Продажа Продавец
Код цветка Код цветка Код продавца
Название цветка Дата продажи Фамилия
Сорт цветка Цена продажи Имя
Средняя высота Код продавца Отчество
Тип листа Код продажи Разряд
Цветущий   Оклад
Дополнительные сведения   Дата приема на работу

 

Прежде всего, отметим, что таблица «Продажа» является главной.

За сведениями о цветке она должна обращаться по внешнему ключу к таблице «Цветок» (поле «Код цветка» таблицы «Продажа» ссылается на одноименное поле таблицы «Цветок»).

За сведениями о продавце необходимо по внешнему ключу обращаться к таблице «Продавец» (поле «Код продавца» таблицы «Продажа» ссылается на поле «Код продавца» таблицы «Продавец»).

Первичным ключом таблицы «Продажа», очевидно, должно являться поле «Код продажи». Введем обозначения и выберем следующим образом типы полей таблицы «Продажа».

Продажа (Purchase)
Код продажи code_of_sale int Первичный ключ
Код цветка code_of_flower int Ссылкана Flower(code_flower)
Дата продажи date_of_sale smalldatetime  
Цена продажи price_of_sale money  
Код продавца code_of_seller int Ссылкана Seller(code_seller)

 

Задание: Создать таблицу «Продажа» при помощи SQL-запроса:

-- созданиетаблицы «Продажа»

CREATETABLE Purchase(

code_of_sale INTPRIMARYKEYNOTNULL, -- первичныйключ

code_flower INTNOTNULL, -- кодцветка

date_of_sale SMALLDATETIME NOTNULL, -- датапродажи

price_of_sale MONEY NOTNULL, -- цена

code_of_seller INTNOTNULL -- кодпродавца

)

 

В списке таблиц выберите таблицу Purchase, в контекстном меню выберите пункт «Проект». Должно получиться что-то подобное изображенному на рисунке 1.

Рисунок 1

 

Чтобы посмотреть SQL-код, соответствующий проекту, выберите в контекстном меню пункт «Правка». Видно, что код несколько отличается от введенного нами, особенно в части определения первичного ключа. Вначале создается таблица, затем назначается первичный ключ со множеством дополнительных атрибутов.

USE[books]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATETABLE[dbo].[Purchase1](

[code_of_sale][INT]NOTNULL,

[code_flower][INT]NOTNULL,

[date_of_sale][smalldatetime]NOTNULL,

[price_of_sale][money]NOTNULL,

[code_of_seller][INT]NOTNULL,

PRIMARYKEY CLUSTERED

([code_of_sale]ASC

)WITH(PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS =ON, ALLOW_PAGE_LOCKS =ON)ON[PRIMARY]

)ON[PRIMARY]

 

Задание: создать таблицы «Цветок» и «Продавец». Ниже предсталваены названия полей и типы данных.

Цветок(Flower)
Код цветка code_flower int Первичный ключ
Название цветка name_flower varchar(40) NOT NULL
Сорт цветка kind_flower varchar(40)  
Средняя высота mean_height int NOT NULL
Тип листа kind_leaf varchar(40)  
Цветущий if_flowering bit  
Дополнительные сведения additional_inf varchar(40)  
Продавец(Seller)
Фамилия lastname varchar(40) NOT NULL
Имя firstnam varchar(40) NOT NULL
Отчество middlename varchar(40)  
Разряд category int  
Оклад pay money  
Дата прием на работу startdate smalldatetime  

 

Теперь необходимо задать внешние ключи для таблиц. Выбираем в «Обозревателе объектов» таблицу Purchase, в раскрывающемся списке — «Ключи», в контектстном меню — «Создать первичный ключ…» (рисунок 2).

Рисунок 2

 

Создадимссылкуповнешнемуключуизтаблицы Purchase (поле Code_flower) натаблицу Flower (поле Code_flower):

· в раскрывающемся окне (рисунок 3) в ячейке «Идентификация (Имя)» записываем FK_Purchase_Flower

· открываем для редактирования пункт «Идентификация таблиц и столбцов » (после щелчка мышью по этому полю справа появляется маленький квадратик с точками; нажав на него, переходим на окно, изображенное на рисунке 4). В качестве таблицы первичного ключа выбираем Flower, поле code_flower, в качестве таблицы внешнего ключа уже выбрана таблица Purchase, надо также здесь выбрать поле code_flower. Не забываем нажать ОК.


После обновления (возможно, потребуется отключиться и заново поключиться к базе данных) среди ключей таблицы Purchase должен появиться только что созданный FK_Purchase_Flower (рисунок 5).

Аналогичным образом создадим ссылку по внешнему ключу из таблицы Purchase (поле Code_seller) на таблицу Seller (поле Code_seller).

Рисунок 3

Рисунок 4

Рисунок 5

 

После того, как ссылки по внешним ключам созданы, создадим диаграмму для базы данных (в «Обозревателе объектов» выбираем нашу базу данных, ниже «Диаграммы баз данных», и в контекстном меню - «Создать диаграмму базы данных»; в открывшемся окне включаем в диаграмму все таблицы). Должна получиться диаграмма, подобная изображенной на рисунке 6.

Рисунок 6

 

Задание: Создайте базу данных DB_BOOKS при помощи SQL-запроса

CREATEDATABASE DB_BOOKS USE DB_BOOKSCREATETABLE Authors(Code_author INTPRIMARYKEYNOTNULL, -- Кодавтора Name_author CHAR(30), -- Фамилияавтора Birthday DATETIME -- Датарождения) CREATETABLE Publishing_house(Code_publish INTPRIMARYKEYNOTNULL, -- Кодиздательства Publish CHAR(30), -- Название издательства City CHAR(20) -- Город издательства) CREATETABLE Books(Code_book INTPRIMARYKEYNOTNULL, -- Кодкниги Title_book CHAR(40), -- Названиекниги Code_author INTFOREIGNKEYREFERENCES Authors(Code_author), Pages INT, Code_publish INTFOREIGNKEYREFERENCES Publishing_house(Code_publish)) CREATETABLE Deliveries(Code_delivery INTPRIMARYKEYNOTNULL, -- Коддоставщика Name_delivery CHAR(30), -- Наименованиедоставщика Name_company CHAR(20), -- Наименованиекомпании Address_company VARCHAR(100), -- Адрес Phone BIGINT, -- Телефон INN CHAR(13) -- ИНН) CREATETABLE Purchases(Code_purchase INTPRIMARYKEYNOTNULL, -- Кодпродажи Code_book INTFOREIGNKEYREFERENCES Books(Code_book), Date_order SMALLDATETIME, -- Дата Code_delivery INTFOREIGNKEYREFERENCES Deliveries(Code_delivery), Type_purchase BIT, -- Типпродажи Cost FLOAT, -- Цена Amount INT -- Количество)

 

Задание: Определите и создайтемежтабличные связи идиаграмму для БД BOOKS.Заполните таблицы созданных двух БД не менее 5 записями.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-23 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: