CREATE TABLE genero (
  idgenero INTEGER UNSIGNED  NOT NULL   AUTO_INCREMENT,
  nome VARCHAR(50)  NULL    ,
PRIMARY KEY(idgenero));



CREATE TABLE tipo (
  idtipo INTEGER UNSIGNED  NOT NULL   AUTO_INCREMENT,
  nome VARCHAR(35)  NULL    ,
PRIMARY KEY(idtipo));



CREATE TABLE autor (
  idautor INTEGER UNSIGNED  NOT NULL   AUTO_INCREMENT,
  nome VARCHAR(50)  NULL    ,
PRIMARY KEY(idautor));



CREATE TABLE editora (
  ideditora INTEGER UNSIGNED  NOT NULL   AUTO_INCREMENT,
  nome VARCHAR(50)  NULL    ,
PRIMARY KEY(ideditora));



CREATE TABLE material (
  idmaterial INTEGER UNSIGNED  NOT NULL   AUTO_INCREMENT,
  editora_ideditora INTEGER UNSIGNED  NOT NULL  ,
  tipo_idtipo INTEGER UNSIGNED  NOT NULL  ,
  genero_idgenero INTEGER UNSIGNED  NOT NULL  ,
  titulo VARCHAR(255)  NULL  ,
  paginas INTEGER UNSIGNED  NULL  ,
  peso FLOAT  NULL  ,
  sinopse TEXT  NULL  ,
  ano YEAR  NULL    ,
PRIMARY KEY(idmaterial)  ,
INDEX material_FKIndex1(genero_idgenero)  ,
INDEX material_FKIndex2(tipo_idtipo)  ,
INDEX material_FKIndex3(editora_ideditora),
  FOREIGN KEY(genero_idgenero)
    REFERENCES genero(idgenero)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
  FOREIGN KEY(tipo_idtipo)
    REFERENCES tipo(idtipo)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
  FOREIGN KEY(editora_ideditora)
    REFERENCES editora(ideditora)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION);



CREATE TABLE material_has_autor (
  material_idmaterial INTEGER UNSIGNED  NOT NULL  ,
  autor_idautor INTEGER UNSIGNED  NOT NULL    ,
PRIMARY KEY(material_idmaterial, autor_idautor)  ,
INDEX material_has_autor_FKIndex1(material_idmaterial)  ,
INDEX material_has_autor_FKIndex2(autor_idautor),
  FOREIGN KEY(material_idmaterial)
    REFERENCES material(idmaterial)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION,
  FOREIGN KEY(autor_idautor)
    REFERENCES autor(idautor)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION);




