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

Лабораторные № 3-4

.docx
Скачиваний:
5
Добавлен:
06.02.2022
Размер:
184.7 Кб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации

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

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

«Московский технический университет связи и информатики»

Кафедра «Интеллектуальные системы в управлении и автоматизации»

Отчет по лабораторным работам №3-4

по дисциплине «Технологии баз данных»

Выполнил: Кондратьев И.В

Студент группы БСТ1851

Лабораторная работа №3-4

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

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

Описание предметной области

Для магазина, торгующего картинами, разрабатывается база данных.

После системного анализа предметной области, была разработана инфологическая модель, на основании которой была создана даталогическая модель, содержащая пять отношений.

Таблица CUSTOMER содержит данные о покупателях

Таблица ARTIST содержит данные о художниках

Таблица WORK содержит данные о картинах

Таблица TRANSACTION содержит данные о сделках

Таблица CUSTOMER_ARTIST_INT содержит данные о предпочтениях покупателя к определенному художнику.

Выполнение работы

Создание таблиц CUSTOMER, ARTIST, CUSTOMER_ARTIST_INT

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 number(20) PRIMARY KEY,

Name varchar(25) NOT NULL,

Nationality varchar(30) NULL,

Birthdate date NULL,

DeceasedDate date NULL);

CREATE INDEX Artist ON ARTIST(Name);

----------------------------------

CREATE TABLE CUSTOMER_ARTIST_INT(

ArtistID int NOT NULL,

CustomerID int NOT NULL);

ALTER TABLE CUSTOMER_ARTIST_INT

ADD CONSTRAINT CustomerArtistPK PRIMARY KEY ( ArtistID,

CustomerID );

Создание суррогатных ключей с помощью последовательностей

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', 'English');

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');

Отобразите на экране столбцы

ArtistID, Name, Nationality из таблицы ARTIST;

CustomerID, Name, AreaCode, PhoneNumber из таблицы CUSTOMER.

select ArtistID, Name, Nationality from ARTIST;

select CustomerID, Name, Area_Code, Phone_Number from CUSTOMER;

Создание связей

ALTER TABLE CUSTOMER_ARTIST_INT ADD CONSTRAINT ArtlstIntFK

FOREIGN KEY(ArtistID) REFERENCES ARTIST ON DELETE CASCADE;

ALTER TABLE CUSTOMER_ARTIST_INT ADD CONSTRAINT CustomerIntFK

FOREIGN KEY(CustomerID) REFERENCES CUSTOMER ON DELETE CASCADE;

Создание таблиц WORK и TRANSACTION

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 ArtistFK

FOREIGN KEY (ArtistID) REFERENCES ARTIST;

CREATE TABLE TRANSACTION (

TransactionID int PRIMARY KEY,

DateAcqulred 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 CustomerFK

FOREIGN KEY (CustomerID) REFERENCES CUSTOMER;

Изменение типов данных

Пока столбцы имеют пустые значения, можно менять тип данных, не удаляя при этом сами столбцы.

ALTER TABLE ARTIST MODIFY BirthDate Number(4);

ALTER TABLE ARTIST MODIFY DeceasedDate Number(4);

Установка ограничений

Следующие два оператора устанавливают пределы значений столбцов BirthDate и DeceasedDate.

ALTER TABLE ARTIST ADD CONSTRAINT BDLimit CHECK (BirthDate

BETWEEN 1400 AND 2100);

ALTER TABLE ARTIST ADD CONSTRAINT DDLimit CHECK (DeceasedDate

BETWEEN 1400 AND 2100);

UPDATE ARTIST SET BirthDate = 1870 WHERE Name = 'Miro';

UPDATE ARTIST SET BirthDate = 1270 WHERE Name = 'Tobey';

Контрольные задания

Добавим информацию о двух художниках в таблицу ARTIST

INSERT INTO ARTIST (

ArtistID,Name,Nationality,BirthDate,DeceasedDate)

Values

(ArtistID.NextVal,'Viktor Vasnetsov','RU','1848','1926');

INSERT INTO ARTIST

(ArtistID,Name,Nationality,BirthDate,DeceasedDate)

Values

(ArtistID.NextVal,'Ivan Shishkin','RU','1832','1898');

Добавим в таблицу WORK информацию о трех картинах и художниках

INSERT INTO WORK (WorkID,Description,Title,ArtistID,Copy)

Values

(WorkID.NextVal,'Васнецов1','pic1','6','1');

INSERT INTO WORK (WorkID,Description,Title,ArtistID,Copy)

Values

(WorkID.NextVal,'Шишкин1','pic2','7','1');

INSERT INTO WORK (WorkID,Description,Title,ArtistID,Copy)

Values

(WorkID.NextVal,'Шишкин2','pic3','7','1');

Добавим значения в таблицу CUSTOMER и отобразим таблицу.

INSERT INTO CUSTOMER

(CustomerID, Name, Area_Code, Phone_Number)

Values

(CustID.NextVal, 'buy1', '111', '111');

INSERT INTO CUSTOMER

(CustomerID, Name, Area_Code, Phone_Number)

Values

(CustID.NextVal, 'buy2', '222', '222');

Добавим в таблицу TRANSACTION информацию о покупке картин

INSERT INTO TRANSACTION

(TransactionID,DateAcqulred,AcquisitionPrice,PurchaseDate,SalesPrice,CustomerID,WorkID)

VALUES

(TransID.NextVal,TO_DATE('16/10/2020','DD/MM/YYYY'),11,TO_DATE('16/10/2021','DD/MM/YYYY'),22,1003,500);

INSERT INTO TRANSACTION

(TransactionID,DateAcqulred,AcquisitionPrice,PurchaseDate,SalesPrice,CustomerID,WorkID)

VALUES

(TransID.NextVal,TO_DATE('16/10/2020','DD/MM/YYYY'),10,TO_DATE('16/10/2021','DD/MM/YYYY'),33,1004,501);

INSERT INTO TRANSACTION

(TransactionID,DateAcqulred,AcquisitionPrice,PurchaseDate,SalesPrice,CustomerID,WorkID)

VALUES

(TransID.NextVal,TO_DATE('16/10/2020','DD/MM/YYYY'),3222,TO_DATE('16/10/2021','DD/MM/YYYY'),222,1004,502);

Последовательно отобразим содержимое всех таблиц.

select * from ARTIST;

select WORKID,TITLE,COPY,ARTISTID,DESCRIPTION from WORK;

select * from CUSTOMER;

select * from TRANSACTION;

Москва 2021