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


CREATE TABLE Publishers (
    PublisherID COUNTER PRIMARY KEY,
    PublisherName TEXT(255) UNIQUE NOT NULL,
    Address TEXT(255)
);

CREATE TABLE Authors (
    AuthorID COUNTER PRIMARY KEY,
    FirstName TEXT(50) NOT NULL,
    LastName TEXT(50) NOT NULL
);

CREATE TABLE Books (
    BookID COUNTER PRIMARY KEY,
    Title TEXT(255) NOT NULL,
    AuthorID LONG NOT NULL,
    PublisherID LONG,
    YearPublished INTEGER,
    ISBN TEXT(20),
    CONSTRAINT fk_Books_Authors FOREIGN KEY (AuthorID) REFERENCES Authors(AuthorID),
    CONSTRAINT fk_Books_Publishers FOREIGN KEY (PublisherID) REFERENCES Publishers(PublisherID),
    CONSTRAINT chk_YearPublished CHECK (YearPublished > 1500)
);

CREATE TABLE Readers (
    ReaderID COUNTER PRIMARY KEY,
    LastName TEXT(50) NOT NULL,
    FirstName TEXT(50) NOT NULL,
    BirthDate DATETIME,
    Phone TEXT(20)
);

CREATE TABLE Loans (
    LoanID COUNTER PRIMARY KEY,
    BookID LONG NOT NULL,
    ReaderID LONG NOT NULL,
    IssueDate DATETIME NOT NULL,
    ReturnDate DATETIME,
    CONSTRAINT fk_Loans_Books FOREIGN KEY (BookID) REFERENCES Books(BookID) ON DELETE CASCADE,
    CONSTRAINT fk_Loans_Readers FOREIGN KEY (ReaderID) REFERENCES Readers(ReaderID),
    CONSTRAINT chk_ReturnDate CHECK (ReturnDate >= IssueDate OR ReturnDate IS NULL)
);

CREATE INDEX idx_Readers_LastName ON Readers (LastName);
CREATE INDEX idx_Books_Title ON Books (Title);