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),
    PRIMARY KEY (id));

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))
    PRIMARY KEY (author_id));

CREATE TABLE item_author (
    item_id CHARACTER(10) NOT NULL,
    author_id CHARACTER(10) NOT NULL,
    PRIMARY KEY (item_id, author_id),
    FOREIGN KEY (item_id) REFERENCES item(id),
    FOREIGN KEY (author_id) REFERENCES author(author_id));

CREATE TABLE item_publisher (
    item_id CHARACTER(10) NOT NULL,
    publisher_id CHARACTER(10) NOT NULL,
    PRIMARY KEY (item_id, publisher_id),
    FOREIGN KEY (item_id) REFERENCES item(id),
    FOREIGN KEY (publisher_id) REFERENCES publisher(publisher_id));

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,
    PRIMARY KEY (publisher_id));


CREATE TABLE related_item (
    item_id CHARACTER(10) NOT NULL,
    related_id CHARACTER(10) NOT NULL,
    PRIMARY KEY (item_id, related_id),
    FOREIGN KEY (item_id) REFERENCES item(id),
    FOREIGN KEY (related_id) REFERENCES item(id));

