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 CHARACTER(2)
POSTALCODE VARCHAR(10)
COUNTRY VARCHAR(50)
Primary Key
PK_AUTHORS [primary key]
ID
Foreign Keys
Z_FK_AUTHOR [foreign key, with no action]
ID ←(0..many) PUBLIC.BOOKS.BOOKAUTHORS.AUTHORID
Indexes
PK_AUTHORS [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_10120 [foreign key, with no action]
BOOKID (0..many)→ PUBLIC.BOOKS.BOOKS.ID
Indexes
Z_FK_AUTHOR [non-unique index]
AUTHORID ascending
SYS_FK_10120 [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
Foreign Keys
FK_SALES_BOOK [foreign key, with no action]
ID ← PUBLIC."PUBLISHER SALES".SALES.BOOKID
SYS_FK_10120 [foreign key, with no action]
ID ←(0..many) PUBLIC.BOOKS.BOOKAUTHORS.BOOKID
FK_PREVIOUSEDITION [foreign key, with no action]
ID ←(0..1) PREVIOUSEDITIONID
Indexes
PK_BOOKS [unique index]
ID ascending
U_PREVIOUSEDITION [unique index]
PREVIOUSEDITIONID ascending
FK_PREVIOUSEDITION [non-unique index]
PREVIOUSEDITIONID ascending

 

PUBLIC.BOOKS."Celebrities" [table]
"Id" INTEGER NOT NULL
NAME VARCHAR(20)
Primary Key
"PK_Celebrities" [primary key]
"Id"
Foreign Keys
SYS_FK_10130 [foreign key, with no action]
"Id" ←(0..1) PUBLIC.BOOKS."Celebrity Updates"."Celebrity Id"
Indexes
"PK_Celebrities" [unique index]
"Id" ascending

 

PUBLIC.BOOKS."Celebrity Updates" [table]
"Celebrity Id" INTEGER NOT NULL
"UPDATE" VARCHAR(20)
Primary Key
"PK Celebrity Updates" [primary key]
"Celebrity Id"
Foreign Keys
SYS_FK_10130 [foreign key, with no action]
"Celebrity Id" (0..1)→ PUBLIC.BOOKS."Celebrities"."Id"
Indexes
"PK Celebrity Updates" [unique index]
"Celebrity Id" ascending
SYS_FK_10130 [non-unique index]
"Celebrity Id" 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
Indexes
PK_COUPONS [unique index]
ID ascending

 

PUBLIC.BOOKS.CUSTOMERDATA [table]
ID INTEGER NOT NULL
DATA VALID_STRING(20)
Primary Key
PK_CUSTOMERDATA [primary key]
ID
Indexes
PK_CUSTOMERDATA [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
Indexes
PK_CUSTOMERS [unique index]
ID ascending

 

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

 

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