Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Інститут Комп’ютерних Технологій, Автоматики та Метрології
Кафедра КСА
/
Лабораторна робота №3
з дисципліни:
«Бази даних та знань»
Варіант: 4
Мета роботи
Ознайомитися зі структурою БД, написати SQL-скріпт для створення та розгортання бази даних.
Завдання
1. Структура БД має забезпечувати цілісність значень, наприк-лад, міста мають вибиратися з переліку існуючих значень.
2. Для БД має бути передбачено як мінімум 2 індекси.
3. Для реалізації БД написати сценарій для її створення у ядрі MS SQL Server чи MySQL.
4. Для MySQL замість CHECK використовувати тригери, де для шаблонного пошуку використовуються RLIKE (якщо не достатньо можливостей LIKE).
5. Ім’я створюваної БД має складатися з прізвища студента та номеру варіанту, наприклад, Shylo12.
6. Під час створення БД за допомогою SQL-сценарію фізична БД має автоматично заповнюватися пробними даними (хоча б по декілька стрічок для кожної таблиці, окрім BLOB-полів).
БД № 4 «Облік фонотеки на радіостудії»
Структура БД: накласти такі обмеження: порядковий № в альбо-мі не може бути від’ємним; рік народження виконавця не може бути більшим за поточну дату.
SQL-сценарій: Первинні та альтернативні ключі створюються одночасно з таблицями. Зовнішні ключі створюються після створення таблиць. Обмеження CHECK створюються одночасно зі створенням таблиць.
SQL-скріпт
CREATE TABLE Studio(
name varchar(255) NOT NULL,
addres varchar(255),
director varchar(255) NOT NULL,
number_albom int NOT NULL,
CONSTRAINT PK_Studio PRIMARY KEY (number_albom),
CONSTRAINT CHK_Studio CHECK (number_albom>0),
CONSTRAINT UC_Studio UNIQUE (name)
);
CREATE TABLE Song(
ID int NOT NULL,
name varchar(255) NOT NULL,
duration int NOT NULL,
number int NOT NULL,
CONSTRAINT PK_Song PRIMARY KEY (ID),
CONSTRAINT CHK_Song CHECK (number>0),
CONSTRAINT UC_Song UNIQUE (name)
);
CREATE TABLE Performer(
name varchar(255) NOT NULL,
biography text,
country varchar(255) NOT NULL,
borthday int NOT NULL,
CONSTRAINT PK_Performer PRIMARY KEY (name),
CONSTRAINT CHK_Performer CHECK (borthday<=year(getdate()))
);
CREATE TABLE Albom(
number int NOT NULL,
name varchar(255) NOT NULL,
photo image,
ID_song int NOT NULL,
name_performer varchar(255) NOT NULL,
year_note int NOT NULL,
CONSTRAINT CHK_Albom CHECK (number>0),
);
ALTER TABLE Albom
ADD CONSTRAINT FK_Studio_Albom
FOREIGN KEY (number) REFERENCES Studio(number_albom);
ALTER TABLE Albom
ADD CONSTRAINT FK_Song_Albom
FOREIGN KEY (ID_song) REFERENCES Song(ID);
ALTER TABLE Albom
ADD CONSTRAINT FK_Performer_Albom
FOREIGN KEY (name_performer) REFERENCES Performer(name);
INSERT INTO Song VALUES(1,'Immortalized', 258, 2);
INSERT INTO Song VALUES(2,'The Eye Of The Storm', 81, 1);
INSERT INTO Song VALUES(3,'The Vengeful One', 252, 3);
INSERT INTO Studio VALUES('Reprise Records', NULL, 'Kavin Cherko', 1);
INSERT INTO Performer VALUES('David Draiman', NULL, 'Chicago', 1973);
INSERT INTO Albom VALUES(1,'Immortalized', NULL, 1, 'David Draiman', 2015);
INSERT INTO Albom VALUES(1,'Immortalized', NULL, 2, 'David Draiman', 2015);
INSERT INTO Albom VALUES(1,'Immortalized', NULL, 3, 'David Draiman', 2015);
INSERT INTO Song VALUES(4,'Sparta', 265, 1);
INSERT INTO Studio VALUES('Abyss', NULL, 'Piter Tugtgrenom', 2);
INSERT INTO Performer VALUES('Joakim Broden', NULL, 'Falun', 1980);
INSERT INTO Albom VALUES(2,'IThe Last Stand', NULL, 4, 'Joakim Broden', 2016);
SELECT Song.name AS song, Albom.name AS albom, Albom.photo, Song.duration, Song.number AS Song_number, Performer.name AS performer,
Performer.biography, Performer.country, Performer.borthday, Studio.name AS studio, Studio.addres, Studio.director,
Albom.year_note, Albom.number AS number_albom FROM Song, Albom, Performer, Studio
WHERE Albom.number = Studio.number_albom AND Albom.ID_song = Song.ID AND Albom.name_performer = Performer.name;
Скріншоти
/
/
/
/
/
Висновок
Отже, на цій лабораторній роботі я ознайомився зі структурою БД, написав SQL-скріпт для створення та розгортання бази даних.