Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 Создание и редактирование таблиц с помощью команд языка SQL.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
160.69 Кб
Скачать

Лабораторная работа №1: «Создание и редактирование таблиц с помощью команд языка sql»

Цели:

  1. Изучение способов определения отношения между таблицами в реляционных базах данных.

  2. Изучение способов установления ограничений на содержимое полей.

  3. Элемент нумерованного списка. Изучение операторов манипулирования данными

Задание внешних ключей в среде 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-запроса:

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

CREATE TABLE Purchase(

code_of_sale INT PRIMARY KEY NOT NULL, -- первичный ключ

code_flower INT NOT NULL, -- код цветка

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

price_of_sale MONEY NOT NULL, -- цена

code_of_seller INT NOT NULL -- код продавца

)

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

Рисунок 1

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

USE [books]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[Purchase1](

[code_of_sale] [INT] NOT NULL,

[code_flower] [INT] NOT NULL,

[date_of_sale] [smalldatetime] NOT NULL,

[price_of_sale] [money] NOT NULL,

[code_of_seller] [INT] NOT NULL,

PRIMARY KEY 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-запроса

CREATE DATABASE DB_BOOKS

 

USE DB_BOOKS

CREATE TABLE Authors(

Code_author INT PRIMARY KEY NOT NULL, -- Код автора

Name_author CHAR(30), -- Фамилия автора

Birthday DATETIME -- Дата рождения

)

 

CREATE TABLE Publishing_house(

Code_publish INT PRIMARY KEY NOT NULL, -- Код издательства

Publish CHAR(30), -- Название издательства

City CHAR(20) -- Город издательства

)

 

CREATE TABLE Books(

Code_book INT PRIMARY KEY NOT NULL, -- Код книги

Title_book CHAR(40), -- Название книги

Code_author INT FOREIGN KEY REFERENCES Authors(Code_author),

Pages INT,

Code_publish INT FOREIGN KEY REFERENCES Publishing_house(Code_publish)

)

 

CREATE TABLE Deliveries(

Code_delivery INT PRIMARY KEY NOT NULL, -- Код доставщика

Name_delivery CHAR(30), -- Наименование доставщика

Name_company CHAR(20), -- Наименование компании

Address_company VARCHAR(100), -- Адрес

Phone BIGINT, -- Телефон

INN CHAR(13) -- ИНН

)

 

CREATE TABLE Purchases(

Code_purchase INT PRIMARY KEY NOT NULL, -- Код продажи

Code_book INT FOREIGN KEY REFERENCES Books(Code_book),

Date_order SMALLDATETIME, -- Дата

Code_delivery INT FOREIGN KEY REFERENCES Deliveries(Code_delivery),

Type_purchase BIT, -- Тип продажи

Cost FLOAT, -- Цена

Amount INT -- Количество

)

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