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


CREATE TABLE Издательства (
    КодИздательства COUNTER PRIMARY KEY,
    Название TEXT(255) UNIQUE NOT NULL,
    Адрес TEXT(255)
);

CREATE TABLE Авторы (
    КодАвтора COUNTER PRIMARY KEY,
    Имя TEXT(50) NOT NULL,
    Фамилия TEXT(50) NOT NULL
);

CREATE TABLE Книги (
    КодКниги COUNTER PRIMARY KEY,
    Название TEXT(255) NOT NULL,
    КодАвтора LONG NOT NULL,
    КодИздательства LONG,
    ГодИздания INTEGER,
    ISBN TEXT(20)
);

CREATE TABLE Читатели (
    КодЧитателя COUNTER PRIMARY KEY,
    Фамилия TEXT(50) NOT NULL,
    Имя TEXT(50) NOT NULL,
    ДатаРождения DATETIME,
    Телефон TEXT(20)
);

CREATE TABLE Выдачи (
    КодВыдачи COUNTER PRIMARY KEY,
    КодКниги LONG NOT NULL,
    КодЧитателя LONG NOT NULL,
    ДатаВыдачи DATETIME NOT NULL,
    ДатаВозврата DATETIME
);

ALTER TABLE Книги 
ADD CONSTRAINT fk_Книги_Авторы 
FOREIGN KEY (КодАвтора) REFERENCES Авторы(КодАвтора);

ALTER TABLE Книги 
ADD CONSTRAINT fk_Книги_Издательства 
FOREIGN KEY (КодИздательства) REFERENCES Издательства(КодИздательства);

ALTER TABLE Выдачи 
ADD CONSTRAINT fk_Выдачи_Книги 
FOREIGN KEY (КодКниги) REFERENCES Книги(КодКниги) ON DELETE CASCADE;

ALTER TABLE Выдачи 
ADD CONSTRAINT fk_Выдачи_Читатели 
FOREIGN KEY (КодЧитателя) REFERENCES Читатели(КодЧитателя);

CREATE INDEX idx_Читатели_Фамилия ON Читатели (Фамилия);

ALTER TABLE Книги 
ADD CONSTRAINT chk_ГодИздания 
CHECK (ГодИздания > 1500);

ALTER TABLE Выдачи 
ADD CONSTRAINT chk_ДатаВозврата 
CHECK (ДатаВозврата >= ДатаВыдачи OR ДатаВозврата IS NULL);