
CREATE TABLE public.Logradouro (
                idLogradouro IDENTITY NOT NULL,
                nomeLogradouro VARCHAR(255) NOT NULL,
                CONSTRAINT Logradouro_pk PRIMARY KEY (idLogradouro)
);

CREATE TABLE public.Empresa (
                idEmpresa IDENTITY NOT NULL,
                nomeEmpresa INTEGER NOT NULL,
                telefone VARCHAR(10) NOT NULL,
                site VARCHAR(127) NOT NULL,
                endereco VARCHAR(255) NOT NULL,
                CONSTRAINT Empresa_pk PRIMARY KEY (idEmpresa)
);

CREATE TABLE public.Linha (
                idLinha IDENTITY NOT NULL,
                nome VARCHAR(127) NOT NULL,
                idEmpresa INTEGER NOT NULL,
                CONSTRAINT Linha_pk PRIMARY KEY (idLinha)
);

CREATE TABLE public.Horario (
                idHorario IDENTITY NOT NULL,
                hora TIME NOT NULL,
                idLinha INTEGER NOT NULL,
                CONSTRAINT Horario_pk PRIMARY KEY (idHorario)
);

CREATE TABLE public.Itinerario (
                idLinha INTEGER NOT NULL,
                ordem INTEGER NOT NULL,
                idLogradouro INTEGER NOT NULL,
                CONSTRAINT Itinerario_pk PRIMARY KEY (idLinha, ordem)
);


ALTER TABLE public.Itinerario ADD CONSTRAINT Logradouro_Itinerario_fk
FOREIGN KEY (idLogradouro)
REFERENCES public.Logradouro (idLogradouro)
;


ALTER TABLE public.Linha ADD CONSTRAINT Empresa_Linha_fk
FOREIGN KEY (idEmpresa)
REFERENCES public.Empresa (idEmpresa)
;


ALTER TABLE public.Itinerario ADD CONSTRAINT Linha_Itinerario_fk
FOREIGN KEY (idLinha)
REFERENCES public.Linha (idLinha)
;


ALTER TABLE public.Horario ADD CONSTRAINT Linha_Horario_fk
FOREIGN KEY (idLinha)
REFERENCES public.Linha (idLinha)
;
