Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

tbd3

.docx
Скачиваний:
16
Добавлен:
28.06.2021
Размер:
146.37 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

Ордена Трудового Красного Знамени

Федеральное государственное бюджетное образовательное учреждение высшего образования

МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

ЛАБОРАТОРНАЯ РАБОТА №3-4

по дисциплине «ТЕХНОЛОГИИ БАЗ ДАНЫХ»

Кафедра ИСУиА

Выполнил:

МОСКВА, 2018 г.

Цель работы:

Разработка основных объектов базы данных и связей между ними.

Задачи:

Освоить способы создания первичного ключа; суррогатного ключа, с помощью последовательностей; отработать ввод данных, создание связей и индексов, изменение структуры таблицы с контрольными ограничениями, создание представлений:

Ход работы:

Для выполнения лабораторной работы нам понадобятся таблицы CUSTOMER, WORK и CUSTOMER_ARTIST. Для того, чтобы создать их, сделаем файл Tables1 и заполним его:

CREATE TABLE CUSTOMER(

CustomerID INT NOT NULL,

Name VARCHAR(25) NOT NULL,

Street VARCHAR(30) NULL,

City VARCHAR(35) NULL,

State VARCHAR(2) NULL,

Zip VARCHAR(5) NULL,

Area_code VARCHAR(3) NULL,

Phone_number VARCHAR(8) NULL);

ALTER TABLE CUSTOMER

ADD CONSTRAINT CustomerPK PRIMARY KEY(CustomerID);

CREATE INDEX CustomerNameIndex ON CUSTOMER(Name);

CREATE TABLE ARTIST(

ArtistID INT PRIMARY KEY,

Name VARCHAR(25) NOT NULL,

Nationality VARCHAR(30) NULL,

Birthdate DATE NULL,

DeceaseDate DATE NULL);

CREATE UNIQUE INDEX ArtistNameIndex ON ARTIST(Name);

CREATE TABLE CUSTOMER_ARTIST(

ArtistID INT NOT NULL,

CustomerID INT NOT NULL);

ALTER TABLE CUSTOMER_ARTIST

ADD CONSTRAINT CustomerArtistPK PRIMARY KEY(ArtistID, CustomerID);

Заполним созданные таблицы значениями. Для этого создадим файл Filling со следующим содержанием:

CREATE SEQUENCE CustID INCREMENT BY 1 START WITH 1000;

CREATE SEQUENCE ArtistID INCREMENT BY 1 START WITH 1;

CREATE SEQUENCE WorkID INCREMENT BY 1 START WITH 500;

CREATE SEQUENCE TransID INCREMENT BY 1 START WITH 100;

INSERT INTO ARTIST (ArtistID, Name, Nationality) Values

(ArtistID.NextVal, 'Tobey', 'US');

INSERT INTO ARTIST (ArtistID, Name, Nationality) Values

(ArtistID.NextVal, 'Miro', 'Spanish');

INSERT INTO ARTIST (ArtistID, Name, Nationality) Values

(ArtistID.NextVal, 'Frings', 'US');

INSERT INTO ARTIST (ArtistID, Name, Nationality) Values

(ArtistID.NextVal, 'Foster', 'Eng');

INSERT INTO ARTIST (ArtistID, Name, Nationality) Values

(ArtistID.NextVal, 'van Vronkin', 'US');

INSERT INTO CUSTOMER (CustomerID, Name, Area_code, Phone_number) Values

(CustID.NextVal, 'Jeffrey Janes', '206', '555-1234');

INSERT INTO CUSTOMER (CustomerID, Name, Area_code, Phone_number) Values

(CustID.NextVal, 'David Smith', '206', '555-443');

INSERT INTO CUSTOMER (CustomerID, Name, Area_code, Phone_number) Values

(CustID.NextVal, 'Tiffany Twilight', '360', '555-1040');

Свяжем таблицы CUSTOMER_ARTIST с таблицами CUSTOMER и ARTIST по внешнему ключу. Для этого введем следующие команды:

ALTER TABLE CUSTOMER_ARTIST ADD CONSTRAINT ArtistFK

FOREIGN KEY(ArtistID) REFERENCES ARTIST ON DELETE CASCADE;

ALTER TABLE CUSTOMER_ARTIST ADD CONSTRAINT CustomerFK

FOREIGN KEY(CustomerID) REFERENCES CUSTOMER ON DELETE CASCADE;

Далее нам необходимо создать таблицы WORK и TRANSACTION. Для этого запишем в файл Tables2 следующее:

CREATE TABLE WORK(

WorkID INT PRIMARY KEY,

Description VARCHAR(1000) NULL,

Title VARCHAR(25) NOT NULL,

Copy VARCHAR(8) NOT NULL,

ArtistID INT NOT NULL);

ALTER TABLE WORK ADD CONSTRAINT WorkArtistFK

FOREIGN KEY(ArtistID) REFERENCES ARTIST;

CREATE TABLE TRANSACTION(

TransactionID INT PRIMARY KEY,

DateAcquired DATE NOT NULL,

AcquisitionPrice NUMBER(7,2) NULL,

PurchaseDate DATE NULL,

SalesPrice NUMBER(7,2) NULL,

CustomerID INT NULL,

WorkID INT NOT NULL);

ALTER TABLE TRANSACTION ADD CONSTRAINT WorkFK

FOREIGN KEY(WorkID) REFERENCES WORK;

ALTER TABLE TRANSACTION ADD CONSTRAINT WorkCustomerFK

FOREIGN KEY(CustomerID) REFERENCES CUSTOMER;

CREATE UNIQUE INDEX WorkUniqueIndex ON WORK (Title, Copy, ArtistID);

Создадим представление, соединяющее 3 таблицы с наложенным условием на столбцы AcquisitionPrice и CustomerID :

CREATE VIEW ExpensiveArt AS

SELECT Name, Copy, Title FROM ARTIST, WORK, TRANSACTION

WHERE ARTIST.ArtistID = WORK.ArtistID AND

WORK.WorkID = TRANSACTION.WorkID AND

AcquisitionPrice > 10000 AND

CustomerID IS NULL;

В ыведем содержимое таблицы CUSTOMER и описание таблицы ARTIST (рисунок 1):

Рисунок 1 – Таблицы CUSTOMER и ARTIST

З анесем 2 новые записи о художниках в таблицу ARTIST (рисунок 2):

Рисунок 2 – Ввод записей в таблицу ARTIST

Создадим 3 записи о картинах в таблице WORK (рисунок 3):

Рисунок 3 – Ввод записей в таблицу WORK

В несем 2 записи о покупателях в таблицу CUSTOMER (рисунки 4-5):

Р исунок 4 – Создание записи в таблице CUSTOMER

Рисунок 5 – Создание записи в таблице CUSTOMER

Создадим в таблице CUSTOMER_ARTIST записи, показывающие связь покупателя и художника, которого он предпочитает (рисунок 6):

Р исунок 6 – Внесение записей в таблицу CUSTOMER_ARTIST

Введем записи о покупках картин предпочитаемых художников соответственными покупателями в таблицу TRANSACTION (рисунок 7):

Р исунок 7 – Внесение записей в таблицу TRANSACTION

Последовательно выведем содержание таблиц CUSTOMER, ARTIST, WORK и TRANSACTION (рисунки 8-11):

Рисунок 8 – Содержание таблицы CUSTOMER

Р исунок 9 – Содержание таблицы ARTIST

Рисунок 10 – Содержание таблицы TRANSACTION

Рисунок 11 – Содержание таблицы WORK

Соседние файлы в предмете Базы данных