-- tPSM-MaxMapped/schema/ddl

CREATE TABLE item (
    id CHARACTER(10) NOT NULL,
    ISBN VARCHAR(20),
    title CHARACTER(100),
    subject VARCHAR(200),
    number_of_pages INTEGER,
    type_of_book CHARACTER(50),
    length FLOAT,
    width FLOAT,
    height FLOAT,
    suggested_retail_price DECIMAL(10,2),
    cost DECIMAL(10,2),
    when_is_available DATE,
    quantity_in_stock INTEGER,
    date_of_release DATE,
    description VARCHAR(500),
    begin_time DATE,
    end_time DATE,
    PRIMARY KEY (id, begin_time));

CREATE TABLE author(
    author_id CHARACTER(10) NOT NULL,
    first_name CHARACTER(50),
    middle_name CHARACTER(50),
    last_name CHARACTER(50),
    date_of_birth DATE,
    biography VARCHAR(500),
    street_address VARCHAR(100),
    name_of_city VARCHAR(50),
    name_of_state VARCHAR(50),
    zip_code CHARACTER(8),
    name_of_country VARCHAR(50),
    phone_number VARCHAR(50),
    email_address VARCHAR(100))
    begin_time DATE,
    end_time DATE,
    PRIMARY KEY (author_id, begin_time));

CREATE TABLE item_author (
    item_id CHARACTER(10) NOT NULL,
    author_id CHARACTER(10) NOT NULL,
    begin_time DATE,
    end_time DATE,
    PRIMARY KEY (item_id, author_id, begin_time));

CREATE TABLE item_publisher (
    item_id CHARACTER(10) NOT NULL,
    publisher_id CHARACTER(10) NOT NULL,
    begin_time DATE,
    end_time DATE,
    PRIMARY KEY (item_id, publisher_id, begin_time));

CREATE TABLE publisher (
    publisher_id CHARACTER(10) NOT NULL,
    name VARCHAR(100),
    street_address VARCHAR(100),
    name_of_city VARCHAR(50),
    name_of_state VARCHAR(50),
    zip_code CHARACTER(8),
    exchange_rate FLOAT,
    currency CHARACTER(50),
    phone_number VARCHAR(50),
    web_site VARCHAR(40),
    FAX_number VARCHAR(20) NOT NULL,
    begin_time DATE,
    end_time DATE,
    PRIMARY KEY (publisher_id, begin_time));

CREATE TABLE related_item (
    item_id CHARACTER(10) NOT NULL,
    related_id CHARACTER(10) NOT NULL,
    begin_time DATE,
    end_time DATE,
    PRIMARY KEY (item_id, related_id, begin_time));
