lab_bd_34
.pdfФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ Ордена Трудового Красного Знамени федеральное государственное образовательное
бюджетное учреждение высшего образования «Московский технический университет связи и информатики»
Кафедра «Интеллектуальные системы в управлении и автоматизации»
Лабораторная работа № 3-4
Студента 3 курса заочного отделения группа 2БВМ15025 Студент Иванюк П. Г.
Научный руководитель (преподаватель)
Безумнов Д. Н.
Оценка _________________
Дата, подпись научного руководителя.
Москва 2018
1
Цель: Разработка основных объектов базы данных и связей между ними.
Задачи: Освоить способы создания первичного ключа; суррогатного ключа, с помощью последовательностей; отработать ввод данных, создание связей и индексов, изменение структуры таблицы с контрольными ограничениями, создание представлений.
Ход выполнения
1) Создание первичного ключа двумя способами
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(10) NULL;
Создание простого ключа.
ALTER TABLE CUSTOMER ADD CONSTRAINT CustomerPK PRIMARY KEY (CustomerID);
CREATE INDEX CustonerNameIndex ON CUSTOMER(Name);
CREATE TABLE ARTIST(ArtistID int PRIMARY KEY,Name varchar(25) NOT NULL,Nationality varchar(30) NULL,Birthdate date NULL,DeceasedDate date NULL); CREATE UNIQUE INDEX Artist ON ARTIST(Name);
CREATE TABLE CUSTOMER_ARTIST_INT(ArtistID int NOT NULL,CustomerID int NOT NULL);
2
Создание составного ключа.
ALTER TABLE CUSTOMER_ARTIST_INT ADD CONSTRAINT CustomerArtistPK PRIMARY
KEY ( ArtistID,CustomerID ),
2) Создание суррогатных ключей с помощью последовательностей
Create Sequence CustID Increment by 1 start with 100;
Drop Sequence CustID;
INSERT INTO CUSTOMER CustomerID, Name, Area_Code, Phorie_Nuniber) VALUES (CustID.NextVal, 'Mary Jones', '350', '555-1234');
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;
3
3) Ввод данных
@C:\Temp\ACIns.sql
4) Создание связей
ALTER TABLE CUSTOMER_ARTIST_INT ADD CONSTRAINT ArtistIntFK FOREIGN KEY(ArtistID) REFERENCES ARTIST ON DELETE CASCADE;
ALTER TABLE CUSTOMER_ARTIST_INT ADD CONSTRAINT CustonerIntFK FOREIGN KEY(CustomerID) REFERENCES CUSTOMER ON DELETE CASCADE;
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,Work ID 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;
4
5) Создание индексов
CREATE INDEX CustNameIdx ON CUSTOMER(Name);
СREATE UNIQUE INDEX WorkUniqueIndex ON WORK (Title, Copy, ArtistID);
6) Изменение структуры таблиц, контрольные ограничения
ALTER TABLE ARTIST MODIFY BirthDate Number(4);
ALTER TABLE ARTIST MODIFY DeceasedDate Number(4);
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 = 1970 WHERE Name = 'Tobey'; 7) Представления
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; CREATE VIEW V1 AS SELECT * FROM ARTIST WITH READ ONLY;
5
6
7
Выводы
Выполнено создание пяти таблиц.
Выполнено создание первичного ключа двумя способами:
Простого ключа. Составного ключа.
Выполнено создание суррогатных ключей, предназначенных для автоматического подсчѐта данных по первичному ключу.
Таблицы были заполнены данными, связаны между собой, создана индексация данных и созданы представления для удобного отображения данных.
8