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

Лабы / BD_laba_2_

.docx
Скачиваний:
2
Добавлен:
09.12.2024
Размер:
53.09 Кб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное

учреждение высшего образования

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМУПРАВЛЕНИЯ И РАДИОЭЛЕКТРИКИ (ТУСУР)

Кафедра промышленной электроники (ПрЭ)

СОЗДАНИЕ СВЯЗАННЫХ ТАБЛИЦ В СУБД «ORACLE» С ДЕКЛАРАТИВНЫМИ ОГРАНИЧЕНИЯМИ ДАННЫХ

Отчет по лабораторной работе №2

по дисциплине «Базы данных»

Выполнил студент гр. 361-2

____________П.В. Можаев

«___» __________ 2024 г.

Проверил ст. препод. каф. ПрЭ

_________ А.И. Муравьев

«___» __________2024 г.

ВВЕДЕНИЕ

Целью работы является формирование навыков создания таблиц с помощью стандартного языка запросов SQL работы с реляционными базами данных. В работе необходимо создать две связанных таблицы (родительская и дочерняя). Список данных задается вариантом. Для 11 варианта необходимо создать следующие таблицы:

Родительская - фирма, дочерняя – предоставляемые услуги.

В таблице фирма должны содержаться следующие данные:

  1. Название фирмы

  2. ФИО директора

  3. Адрес фирмы

  4. Количество работающих сотрудников больше 5

  5. Специализация

В таблице предоставляемые услуги должны содержаться следующие данные: 1) Название услуги

2) Стоимость услуги

3) Продолжительность услуги больше 0

4) Количество сотрудников, обеспечивающих услугу

5) Вид оборудования, используемое при услуге

2 ХОД РАБОТЫ

На рисунках 2.1 и 2.2 представлены заполненные родительская и дочерняя таблицы (соответственно).

2.1 Код для создания родительской таблицы

CREATE TABLE Firm ( Firm_ID NUMBER PRIMARY KEY, -- Уникальный идентификатор фирмы Firm_Name VARCHAR2(100) NOT NULL, -- Название фирмы Director_Name VARCHAR2(100), -- ФИО директора Address VARCHAR2(200), -- Адрес фирмы Employee_Count NUMBER CHECK (Employee_Count > 5), -- Количество сотрудников больше 5 Specialization VARCHAR2(100) -- Специализация фирмы )2.2

Строки для заполнения родительской таблицы

NSERT INTO Firm (Firm_ID, Firm_Name, Director_Name, Address, Employee_Count, Specialization) VALUES (1, 'СтройГарант', 'Иванов Иван Иванович', 'г. Москва, ул. Ленина, д. 10', 25, 'Строительные услуги'); INSERT INTO Firm (Firm_ID, Firm_Name, Director_Name, Address, Employee_Count, Specialization) VALUES (2, 'ТехСервис', 'Петрова Анна Сергеевна', 'г. Санкт-Петербург, Невский пр., д. 15', 12, 'Ремонт и обслуживание техники'); INSERT INTO Firm (Firm_ID, Firm_Name, Director_Name, Address, Employee_Count, Specialization) VALUES (3, 'Чистый Дом', 'Сидоров Алексей Павлович', 'г. Новосибирск, ул. Советская, д. 5', 8, 'Уборка помещений')

Рисунок 2.1 – Заполненная родительская таблица

2.3 Код для создания дочерней таблицы

CREATE TABLE Provided_Services ( Service_ID NUMBER PRIMARY KEY, -- Уникальный идентификатор услуги Firm_ID NUMBER NOT NULL, -- Внешний ключ к таблице Firm Service_Name VARCHAR2(100) NOT NULL, -- Название услуги Cost NUMBER(10, 2) CHECK (Cost > 0), -- Стоимость услуги (должна быть больше 0) Duration NUMBER CHECK (Duration > 0),-- Продолжительность услуги (должна быть больше 0) Employee_Count NUMBER, -- Количество сотрудников, обеспечивающих услугу Equipment_Type VARCHAR2(100), -- Вид используемого оборудования CONSTRAINT fk_firm FOREIGN KEY (Firm_ID) REFERENCES Firm(Firm_ID) )2.4 Строки для заполнение дочерней таблицы

INSERT INTO Provided_Services (Service_ID, Firm_ID, Service_Name, Cost, Duration, Employee_Count, Equipment_Type) VALUES (1, 1, 'Ремонт квартир', 150000, 30, 5, 'Электроинструменты'); INSERT INTO Provided_Services (Service_ID, Firm_ID, Service_Name, Cost, Duration, Employee_Count, Equipment_Type) VALUES (2, 1, 'Монтаж кровли', 200000, 20, 7, 'Кровельное оборудование'); INSERT INTO Provided_Services (Service_ID, Firm_ID, Service_Name, Cost, Duration, Employee_Count, Equipment_Type) VALUES (3, 2, 'Ремонт смартфонов', 3000, 2, 2, 'Паяльная станция'); INSERT INTO Provided_Services (Service_ID, Firm_ID, Service_Name, Cost, Duration, Employee_Count, Equipment_Type) VALUES (4, 2, 'Настройка компьютеров', 1500, 1, 1, 'Компьютерное ПО'); INSERT INTO Provided_Services (Service_ID, Firm_ID, Service_Name, Cost, Duration, Employee_Count, Equipment_Type) VALUES (5, 3, 'Генеральная уборка', 10000, 8, 3, 'Профессиональные пылесосы'); INSERT INTO Provided_Services (Service_ID, Firm_ID, Service_Name, Cost, Duration, Employee_Count, Equipment_Type) VALUES (6, 3, 'Мытье окон', 5000, 4, 2, 'Моющие средства')

Рисунок 2.2 – Заполненная дочерняя таблица

2.5 Команды модификации данных, нарушающие целостность ссылок, для родительской таблицы:

1) Удаление строки из родительской таблицы

Если дочерняя таблица ссылается на строку в родительской таблице, удалений этой строки приведет к нарушению целостности ссылок.

DELETE FROM Firm WHERE Firm_ID = 1;

ORA-02292: integrity constraint (D3612MPV.FK_FIRM) violated - child record found – ошибка возникает в дочерней таблице, если в ней есть строки, подходящие под условие Firm_ID = 1.

2) Изменение значения первичного ключа.

Обновление значения первичного ключа в родительской таблице, на который ссылаются строки в дочерней таблице, также нарушается целостность ссылок.

UPDATE Firm SET Firm_ID = 99 WHERE Firm_ID = 1;

ORA-02292: integrity constraint (D3612MPV.FK_FIRM) violated - child record found

Для дочерней таблицы

  1. Удаление строки из дочерней таблицы

Если в родительской таблице есть строк, на которые ссылаются внешние ключи в дочерней таблице, и вы удаляете эти строки из дочерней таблицы, это нарушает целостность ссылок.

DELETE FROM Provided_Services WHERE Service_ID = 1; ORA-02291: integrity constraint (SCHEMA.CONSTRAINT_NAME) violated - parent key not found

  1. Изменение значения внешнего ключа в дочерней таблице

Если изменить значение внешнего ключа в дочерней таблице, который ссылается на родительскую таблицу, это также приведет к нарушению целостности ссылок.

UPDATE Provided_Services SET Firm_ID = 99 WHERE Service_ID = 1

ORA-02291: integrity constraint (D3612MPV.FK_FIRM) violated - parent key not found

2024

Соседние файлы в папке Лабы