Database Design for Books and Publishers

 

Tables

PUBLIC.BOOKS.AUTHORS [table]
ID INTEGER NOT NULL
FIRSTNAME VARCHAR(20) NOT NULL
LASTNAME VARCHAR(20) NOT NULL
ADDRESS1 VARCHAR(255)
ADDRESS2 VARCHAR(255)
CITY VARCHAR(50)
STATE VARCHAR(2)
POSTALCODE VARCHAR(10)
COUNTRY VARCHAR(50)
Primary Key
PK_AUTHORS [primary key]
ID ascending
Foreign Keys
Z_FK_AUTHOR [foreign key, with no action]
ID ←(0..many) PUBLIC.BOOKS.BOOKAUTHORS.AUTHORID
Indexes
SYS_IDX_PK_AUTHORS_10111 [unique index]
ID ascending
IDX_B_AUTHORS [non-unique index]
LASTNAME ascending
FIRSTNAME ascending
IDX_A_AUTHORS [non-unique index]
CITY ascending
STATE ascending
POSTALCODE ascending
COUNTRY ascending

 

PUBLIC.BOOKS.AUTHORSLIST [view]
ID INTEGER
FIRSTNAME VARCHAR(20)
LASTNAME VARCHAR(20)

 

PUBLIC.BOOKS.BOOKAUTHORS [table]
BOOKID INTEGER NOT NULL
AUTHORID INTEGER NOT NULL
SOMEDATA VARCHAR(30)
Foreign Keys
Z_FK_AUTHOR [foreign key, with no action]
AUTHORID (0..many)→ PUBLIC.BOOKS.AUTHORS.ID
SYS_FK_10128 [foreign key, with no action]
BOOKID (0..many)→ PUBLIC.BOOKS.BOOKS.ID
Indexes
SYS_IDX_Z_FK_AUTHOR_10134 [non-unique index]
AUTHORID ascending
SYS_IDX_SYS_FK_10128_10132 [non-unique index]
BOOKID ascending
UIDX_BOOKAUTHORS [unique index]
BOOKID ascending
AUTHORID ascending

 

PUBLIC.BOOKS.BOOKS [table]
ID INTEGER NOT NULL
TITLE VARCHAR(255) NOT NULL
DESCRIPTION VARCHAR(255)
PUBLISHERID INTEGER NOT NULL
PUBLICATIONDATE DATE
PRICE DOUBLE(64, 0)
PREVIOUSEDITIONID INTEGER
Primary Key
PK_BOOKS [primary key]
ID ascending
Foreign Keys
SYS_FK_10128 [foreign key, with no action]
ID ←(0..many) PUBLIC.BOOKS.BOOKAUTHORS.BOOKID
FK_PREVIOUSEDITION [foreign key, with no action]
ID ←(0..1) PREVIOUSEDITIONID
Indexes
SYS_IDX_PK_BOOKS_10119 [unique index]
ID ascending
SYS_IDX_U_PREVIOUSEDITION_10125 [unique index]
PREVIOUSEDITIONID ascending
SYS_IDX_FK_PREVIOUSEDITION_10123 [non-unique index]
PREVIOUSEDITIONID ascending

 

PUBLIC.BOOKS.COUPONS [table]
ID INTEGER NOT NULL
DATA CLOB
COUPONS INTEGER ARRAY
BOOKS VARCHAR(20) ARRAY[10]
Primary Key
PK_COUPONS [primary key]
ID ascending
Indexes
SYS_IDX_PK_COUPONS_10093 [unique index]
ID ascending

 

PUBLIC.BOOKS.CUSTOMERDATA [table]
ID INTEGER NOT NULL
DATA VALID_STRING(20)
Primary Key
PK_CUSTOMERDATA [primary key]
ID ascending
Indexes
SYS_IDX_PK_CUSTOMERDATA_10104 [unique index]
ID ascending

 

PUBLIC.BOOKS.CUSTOMERS [table]
ID INTEGER NOT NULL
FIRSTNAME NAME_TYPE(100) NOT NULL
LASTNAME NAME_TYPE(100) NOT NULL
AGE AGE_TYPE
Primary Key
PK_CUSTOMERS [primary key]
ID ascending
Indexes
SYS_IDX_PK_CUSTOMERS_10098 [unique index]
ID ascending

 

PUBLIC.BOOKS."Global Counts" [table]
"Global Count" INTEGER
"UPDATE" VARCHAR(20)

 

PUBLIC.BOOKS.PUBLISHERS [table]
ID INTEGER NOT NULL
auto-incremented
PUBLISHER VARCHAR(255)
Primary Key
SYS_PK_10106 [primary key]
ID ascending
Foreign Keys
FK_ΒΙΒΛΊΑ_PUBLISHERS [foreign key, with no action]
ID ←(0..many) PUBLIC.BOOKS.ΒΙΒΛΊΑ.ΕΚΔΌΤΗΣ
Indexes
SYS_IDX_SYS_PK_10106_10107 [unique index]
ID ascending

 

PUBLIC.BOOKS.ΒΙΒΛΊΑ [table]
ΜΟΝΑΔΙΚΌΣ SMALLINT NOT NULL
ΤΊΤΛΟΣ VARCHAR(255) NOT NULL
ΠΕΡΙΓΡΑΦΉ VARCHAR(255)
ΕΚΔΌΤΗΣ SMALLINT NOT NULL
Primary Key
PK_ΒΙΒΛΊΑ [primary key]
ΜΟΝΑΔΙΚΌΣ ascending
Foreign Keys
FK_ΒΙΒΛΊΑ_PUBLISHERS [foreign key, with no action]
ΕΚΔΌΤΗΣ (0..many)→ PUBLIC.BOOKS.PUBLISHERS.ID
Indexes
SYS_IDX_FK_ΒΙΒΛΊΑ_PUBLISHERS_10144 [non-unique index]
ΕΚΔΌΤΗΣ ascending
SYS_IDX_PK_ΒΙΒΛΊΑ_10140 [unique index]
ΜΟΝΑΔΙΚΌΣ ascending