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);