CREATE TABLE logradouro (
  id_logradouro INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nome VARCHAR(100) NULL,
  PRIMARY KEY(id_logradouro)
)
TYPE=InnoDB;

CREATE TABLE itinerario (
  id_itinerario INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nome VARCHAR(100) NULL,
  PRIMARY KEY(id_itinerario)
)
TYPE=InnoDB;

CREATE TABLE empresa (
  id_empresa INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nome VARCHAR(100) NULL,
  endereco VARCHAR(100) NULL,
  telefone VARCHAR(50) NULL,
  website VARCHAR(50) NULL,
  PRIMARY KEY(id_empresa)
)
TYPE=InnoDB;

CREATE TABLE logradouro_itinerario (
  id_logradouro_itinerario INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  id_logradouro INTEGER UNSIGNED NOT NULL,
  id_itinerario INTEGER UNSIGNED NOT NULL,
  PRIMARY KEY(id_logradouro_itinerario),
  INDEX logradouro_itinerario_FKIndex1(id_itinerario),
  INDEX logradouro_itinerario_FKIndex2(id_logradouro),
  FOREIGN KEY(id_itinerario)
    REFERENCES itinerario(id_itinerario)
      ON DELETE RESTRICT
      ON UPDATE CASCADE,
  FOREIGN KEY(id_logradouro)
    REFERENCES logradouro(id_logradouro)
      ON DELETE RESTRICT
      ON UPDATE CASCADE
)
TYPE=InnoDB;

CREATE TABLE linhas (
  id_linhas INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  id_itinerario INTEGER UNSIGNED NOT NULL,
  id_empresa INTEGER UNSIGNED NOT NULL,
  nome VARCHAR(100) NULL,
  PRIMARY KEY(id_linhas),
  INDEX linhas_FKIndex1(id_empresa),
  INDEX linhas_FKIndex2(id_itinerario),
  FOREIGN KEY(id_empresa)
    REFERENCES empresa(id_empresa)
      ON DELETE RESTRICT
      ON UPDATE CASCADE,
  FOREIGN KEY(id_itinerario)
    REFERENCES itinerario(id_itinerario)
      ON DELETE RESTRICT
      ON UPDATE CASCADE
)
TYPE=InnoDB;

CREATE TABLE quadro_horario (
  id_quadro_horario INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  id_linhas INTEGER UNSIGNED NOT NULL,
  horario_saida TIME NULL,
  PRIMARY KEY(id_quadro_horario),
  INDEX quadro_horario_FKIndex1(id_linhas),
  FOREIGN KEY(id_linhas)
    REFERENCES linhas(id_linhas)
      ON DELETE RESTRICT
      ON UPDATE CASCADE
)
TYPE=InnoDB;


