CREATE TABLE MEDIA (
  UUIDSTRING VARCHAR(255) NOT NULL, 
  TITLE VARCHAR(100) NOT NULL,
  ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
  
  
);
     
CREATE TABLE BOOK (
  ISBN VARCHAR(100) NOT NULL,
  
  
  MEDIA_ID INTEGER NOT NULL,
  CONSTRAINT FOREIGN KEY (MEDIA_ID) REFERENCES MEDIA(ID)
);
     
CREATE TABLE PERSON (
  NAME VARCHAR(100) NOT NULL,
  AGE INTEGER NOT NULL,
  SSN VARCHAR(100) NOT NULL,
  ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
  
  
);
     
CREATE TABLE ENGAGEMENT (
  UUIDSTRING VARCHAR(255) NOT NULL, 
  ROLE VARCHAR(100) NOT NULL,
  ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
  
  PERSON_ID INTEGER NOT NULL,
  CONSTRAINT FOREIGN KEY (PERSON_ID) REFERENCES PERSON(ID),
  MEDIA_ID INTEGER NOT NULL,
  CONSTRAINT FOREIGN KEY (MEDIA_ID) REFERENCES MEDIA(ID)
  
);
     
CREATE TABLE LIBRARY (
  NAME VARCHAR(100) NOT NULL,
  ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
  
  
);
     
CREATE TABLE MEDIACHARACTER (
  UUIDSTRING VARCHAR(255) NOT NULL, 
  ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
  NAME VARCHAR(100) NOT NULL
  
  
);
     
CREATE TABLE MOVIE (
  URLIMDB VARCHAR(100) NOT NULL,
  PLAYLENGTH INTEGER NOT NULL,
  
  
  MEDIA_ID INTEGER NOT NULL,
  CONSTRAINT FOREIGN KEY (MEDIA_ID) REFERENCES MEDIA(ID)
);
     
CREATE TABLE PHYSICALMEDIA (
  UUIDSTRING VARCHAR(255) NOT NULL, 
  ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
  STATUS VARCHAR(50) NOT NULL,
  LOCATION VARCHAR(100) NOT NULL,
  
  LIBRARY_ID INTEGER NOT NULL,
  CONSTRAINT FOREIGN KEY (LIBRARY_ID) REFERENCES LIBRARY(ID)
  
);
     

CREATE TABLE MEDIACHARACTER_PERSON (
  PERSON_ID INTEGER NOT NULL,
  CONSTRAINT FOREIGN KEY (PERSON_ID) REFERENCES PERSON(ID),
  MEDIACHARACTER_ID INTEGER NOT NULL,
  CONSTRAINT FOREIGN KEY (MEDIACHARACTER_ID) REFERENCES MEDIACHARACTER(ID)
);

CREATE TABLE MEDIA_MEDIACHARACTER (
  MEDIACHARACTER_ID INTEGER NOT NULL,
  CONSTRAINT FOREIGN KEY (MEDIACHARACTER_ID) REFERENCES MEDIACHARACTER(ID),
  MEDIA_ID INTEGER NOT NULL,
  CONSTRAINT FOREIGN KEY (MEDIA_ID) REFERENCES MEDIA(ID)
);

CREATE TABLE MEDIA_PHYSICALMEDIA (
  PHYSICALMEDIA_ID INTEGER NOT NULL,
  CONSTRAINT FOREIGN KEY (PHYSICALMEDIA_ID) REFERENCES PHYSICALMEDIA(ID),
  MEDIA_ID INTEGER NOT NULL,
  CONSTRAINT FOREIGN KEY (MEDIA_ID) REFERENCES MEDIA(ID)
);