Загрузка данных


1

CREATE TABLE Порода (
    КодПороды INTEGER PRIMARY KEY AUTOINCREMENT,
    НазваниеПороды TEXT NOT NULL UNIQUE
);

CREATE TABLE Врач (
    КодВрача INTEGER PRIMARY KEY AUTOINCREMENT,
    ФИО TEXT NOT NULL,
    Специализация TEXT NOT NULL,
    СертификатЧипирования INTEGER NOT NULL CHECK(СертификатЧипирования IN (0,1))
);

CREATE TABLE Животное (
    КодЖивотного INTEGER PRIMARY KEY AUTOINCREMENT,
    Кличка TEXT NOT NULL,
    ДатаРождения DATE,
    КодПороды INTEGER NOT NULL,
    Отец INTEGER,
    Мать INTEGER,
    FOREIGN KEY (КодПороды) REFERENCES Порода(КодПороды),
    FOREIGN KEY (Отец) REFERENCES Животное(КодЖивотного),
    FOREIGN KEY (Мать) REFERENCES Животное(КодЖивотного)
);

CREATE TABLE Услуга (
    КодУслуги INTEGER PRIMARY KEY AUTOINCREMENT,
    НазваниеУслуги TEXT NOT NULL UNIQUE,
    Цена REAL NOT NULL CHECK(Цена > 0),
    ТребуетСертификат INTEGER NOT NULL CHECK(ТребуетСертификат IN (0,1))
);

CREATE TABLE Прием (
    КодПриема INTEGER PRIMARY KEY AUTOINCREMENT,
    КодЖивотного INTEGER NOT NULL,
    КодВрача INTEGER NOT NULL,
    КодУслуги INTEGER NOT NULL,
    ДатаПриема DATE NOT NULL,
    FOREIGN KEY (КодЖивотного) REFERENCES Животное(КодЖивотного),
    FOREIGN KEY (КодВрача) REFERENCES Врач(КодВрача),
    FOREIGN KEY (КодУслуги) REFERENCES Услуга(КодУслуги)
);

2

CREATE INDEX ИндексЖивотных
ON Животное(Кличка);

3

INSERT INTO Порода (НазваниеПороды) VALUES
('Лабрадор'),
('Овчарка'),
('Сфинкс'),
('Британская'),
('Хаски');

4

INSERT INTO Врач (ФИО, Специализация, СертификатЧипирования) VALUES
('Иванов Сергей', 'Терапевт', 1),
('Петрова Анна', 'Хирург', 0),
('Сидоров Максим', 'Терапевт', 1),
('Кузнецова Ольга', 'Стоматолог', 0),
('Смирнов Алексей', 'Хирург', 1);

5

INSERT INTO Животное (Кличка, ДатаРождения, КодПороды, Отец, Мать) VALUES
('Рекс', '2021-03-10', 1, NULL, NULL),
('Белла', '2020-06-15', 1, NULL, NULL),
('Барон', '2023-01-05', 1, 1, 2),
('Мурка', '2022-08-11', 4, NULL, NULL),
('Луна', '2024-02-20', 5, NULL, NULL);

6

INSERT INTO Услуга (НазваниеУслуги, Цена, ТребуетСертификат) VALUES
('Осмотр', 1000, 0),
('Вакцинация', 1500, 0),
('Чипирование', 2500, 1),
('Удаление зуба', 3500, 0),
('Операция', 10000, 0);

7

INSERT INTO Прием (КодЖивотного, КодВрача, КодУслуги, ДатаПриема) VALUES
(1, 1, 1, '2025-06-01'),
(2, 2, 5, '2025-06-02'),
(3, 1, 3, '2025-06-03'),
(4, 4, 4, '2025-06-04'),
(5, 5, 2, '2025-06-05');

8

SELECT *
FROM Услуга
WHERE Цена > 2000;

9

SELECT
Животное.Кличка,
Врач.ФИО,
Услуга.НазваниеУслуги,
Прием.ДатаПриема
FROM Прием
JOIN Животное ON Прием.КодЖивотного = Животное.КодЖивотного
JOIN Врач ON Прием.КодВрача = Врач.КодВрача
JOIN Услуга ON Прием.КодУслуги = Услуга.КодУслуги;

10

SELECT
Животное.Кличка,
Порода.НазваниеПороды
FROM Животное
JOIN Порода ON Животное.КодПороды = Порода.КодПороды
WHERE Порода.НазваниеПороды = 'Лабрадор';

11

SELECT *
FROM Врач
WHERE СертификатЧипирования = 1;

12

CREATE VIEW ВрачиДляЧипирования AS
SELECT ФИО, Специализация
FROM Врач
WHERE СертификатЧипирования = 1;