-- Nome do aluno NUSP xxxxxxx -- Nome do aluno NUSP xxxxxxx -- SCC0241 - LABORATÓRIO DE BASES DE DADOS -- TRABALHO PRÁTICO 1 -- Script de criação < scriptCria.sql > / -- COMANDO PARA CONFIGURAR USO DE CARACTERES ESPECIAIS ALTER SESSION SET NLS_LANGUAGE= 'PORTUGUESE' NLS_TERRITORY= 'BRAZIL' / -- COMANDO PARA EVITAR PROBLEMAS COM A CRIAÇÂO INCORRETA DE SEQUÊNCIAS ALTER SESSION SET deferred_segment_creation = FALSE; / / -- COMANDOS DE REMOÇÃO DAS TABELAS DROP TABLE emissora CASCADE CONSTRAINT; DROP TABLE departamento CASCADE CONSTRAINT; DROP TABLE tipoFuncionario CASCADE CONSTRAINT; DROP TABLE funcionario CASCADE CONSTRAINT; DROP TABLE dependente CASCADE CONSTRAINT; DROP TABLE gerencia CASCADE CONSTRAINT; DROP TABLE trabalho CASCADE CONSTRAINT; DROP TABLE filme CASCADE CONSTRAINT; DROP TABLE exibicaoFilme CASCADE CONSTRAINT; DROP TABLE serie CASCADE CONSTRAINT; DROP TABLE temporada CASCADE CONSTRAINT; DROP TABLE episodioSerie CASCADE CONSTRAINT; DROP TABLE exibicaoSerie CASCADE CONSTRAINT; DROP TABLE jornal CASCADE CONSTRAINT; DROP TABLE exibicaoJornal CASCADE CONSTRAINT; DROP TABLE comercial CASCADE CONSTRAINT; DROP TABLE cliente CASCADE CONSTRAINT; DROP TABLE exibicaoComercial CASCADE CONSTRAINT; DROP TABLE novela CASCADE CONSTRAINT; DROP TABLE episodioNovela CASCADE CONSTRAINT; DROP TABLE exibicaoNovela CASCADE CONSTRAINT; DROP TABLE valorComercial CASCADE CONSTRAINT; / / / / --Drop em todas as sequências DROP SEQUENCE SEQ_IDDE_DEPTO; DROP SEQUENCE SEQ_IDFU_TIPO_FUNC; DROP SEQUENCE SEQ_CPFFU_FUNC; DROP SEQUENCE SEQ_IDFU_FUNC; DROP SEQUENCE SEQ_IDPR_FILME; DROP SEQUENCE SEQ_IDPR_SERIE; DROP SEQUENCE SEQ_IDPR_JORNAL; DROP SEQUENCE SEQ_IDPR_COMERCIAL; DROP SEQUENCE SEQ_IDPR_NOVELA; / / / / -- COMANDO DE CRIAÇÃO DA TABELA EMISSORA: /* contém os dados de UMA emissora no qual: cnpjEm representa o CNPJ desta emissora e é a Chave Primária desta tabela; nomeCompletoEm é o campo que armazena o valor real desta emissora, é unico, não deve haver valor igual; nomeFantasiaEm é o campo que armazena um nome fantasia para esta emissora; enderecoEm é o campo que armazena um endereço. Uma única string que compõem os dados sobre o endereço; dataFundacaoEm é o campo pra o qual pode se armazenar a data de fundação desta emissora; */ CREATE TABLE emissora( cnpjEm NUMBER(14) NOT NULL, -- Chave Primária nomeCompletoEm VARCHAR2(50) NOT NULL, -- Campo de valor único, não devem haver nomes iguais nomeFantasiaEm VARCHAR2(20), enderecoEm VARCHAR2(80), dataFundacaoEm DATE, -- Máscara DD/MM/YYYY CONSTRAINT PK_EMISSORA PRIMARY KEY (cnpjEm), -- PK_EMISSORA define uma restrição para a cláusula PRIMARY KEY CONSTRAINT UN_EMISSORA UNIQUE(nomeCompletoEm) -- UN_EMISSORA define uma restrição para a cláusula UNIQUE ); / / -- COMANDO DE CRIAÇÃO DA TABELA DEPARTAMENTO: /* contém os dados referentes a diversos departamentos no qual: idDe representa um número(até 999) identifica um departamento unicamente, portanto é a Chave Primaria desta tabela; nomeDe é o campo que contém o nome do departamento. É conveinente que saibamos o nome do departamento em questão, portanto, definimos um valor difente de nulo para este campo; telefoneDe é o campo que armazena um telefone para o respectivo departamento na forma (XX)xxxx-xxxx; nroFuncionariosDe é o campo que armazena o número de funcionários do respectivo departamento, por Default o valor é zero, pois não existe, nesse momento da inserção, nenhum funcionário cadastrado. O valor é calculado cnpjEm é campo que armazena o CNPJ da emissora. Deve ser possuir um valor não nulo, pois nao é possível ter um departamento sem antes ter uma emissora cadastrada. Além do mais, cnpjEm precisa ter um mesmo valor de CNPJ da emissora pois cnpjEm é uma Chave Estrangeira da tabela Departamento; */ CREATE TABLE departamento( idDe NUMBER(3) NOT NULL, -- Chave Primária nomeDe VARCHAR2(40) NOT NULL, -- Campo de valor único, ou seja, os departamentos não podem ter nomes iguais telefoneDe VARCHAR2(13), -- (xx)xxxx-xxxx nroFuncionariosDe NUMBER(4) DEFAULT 0, -- Atributo derivado, armazena o número de funcionários do respectivo departamento cnpjEm NUMBER(14) NOT NULL, -- Chave Estrangeira CONSTRAINT PK_DEPTO PRIMARY KEY (idDe), -- PK_DEPTO define uma restrição para a cláusula PRIMARY KEY CONSTRAINT UN_DEPTO UNIQUE(nomeDe), -- UN_DEPTO define uma restrição para a cláusula UNIQUE CONSTRAINT FK_DEPTO FOREIGN KEY(cnpjEm) REFERENCES emissora(cnpjEm) ON DELETE CASCADE -- FK_DEPTO define uma restrição de integridade ); -- entre esta tabela e tabela emissora / / -- COMANDO DE CRIAÇÃO DA TABELA TIPOFUNCIONARIO: /* contém os dados referentes aos tipos de funcionários assim como o seu respectivo salário base e a descrição desse tipo de funcionario, então: idTipoFu é o campo que armazena uma identificação para o tipo de funcionário. É a Chave Primária da tabela; salarioBaseTipoFu contém o valor do salário base dessa categoria de funcionário. Possui uma restrição para valor nulo pois é mais conveniente que este campo tenha um valor(não nulo) para cálculos posteriores; descricaoTipoFu contém uma pquena descrição da categoria desse tipo de funcionario; */ CREATE TABLE tipoFuncionario( idTipoFu NUMBER(3) NOT NULL, -- Chave Primária salarioBaseTipoFu NUMBER(9,2) NOT NULL, -- ex: 1.000.000,00 descricaoTipoFu VARCHAR2(30), CONSTRAINT PK_TIPOFUNC PRIMARY KEY (idTipoFu) -- PK_TIPOFUNC define uma restrição para a cláusula PRIMARY KEY ); / / -- COMANDO DE CRIAÇÃO DA TABELA FUNCIONARIO: /* contém os dados de cada funcionário cadastrado na emissora tais como: idFu representa um número que itendifica o respectivo funcionário. Assim sendo, é a Chave Primária desta tabela; nomeCompletoFu armazena o nome do funcionário; dataNascimentoFu campo que contém a data de nascimento do respectivo funcionário; cpfFu campo que armazena o cpf do funcionário, deve ser um valor único e não nulo pois é conveniente que cada funcionário tenha um CPF; salarioFu campo que armazena o valor do salário para cada funcionário. É calculado através do salário base dado o tipo de funcionário e multiplicado pelo número de anos que este trabalha na emissora e acrescido de um sálario minimo para cada dependente que possuir; idTipoFu campo de valor não nulo, é uma Chave Estrangeira e representa o tipo de funcionário a partir dos tipos funcionários armazenados na tabela TIPOFUNCIONARIO; */ CREATE TABLE funcionario( idFu NUMBER(5) NOT NULL, -- Chave Primária nomeCompletoFu VARCHAR2(60), dataNascimentoFu DATE, -- DD/MM/YYYY cpfFu NUMBER(11) NOT NULL, -- campo de valor único salarioFu NUMBER(9,2) DEFAULT 0, -- atributo derivado que tem por DEFAULT valor 0 idTipoFu NUMBER(3) NOT NULL, -- Chave Estrangeira CONSTRAINT PK_FUNC PRIMARY KEY (idFu), -- PK_FUNC define uma restrição para a cláusula PRIMARY KEY CONSTRAINT UN_FUNC UNIQUE(cpfFu), -- UN_FUNC define uma restrição para a cláusula UNIQUE CONSTRAINT FK_FUNC FOREIGN KEY(idTipoFu) REFERENCES tipoFuncionario(idTipoFu) ON DELETE CASCADE -- PK_FUNC define uma restrição de integridade referencial ); / / -- COMANDO DE CRIAÇÃO DA TABELA DEPENDENTE: /* contém os dados dos dependentes para aqueles funcionários que tem dependente(s): idFu campo que é uma Chave Estrangeira relacionada à tabela FUNCIONARIO e também Chave Primária nesta tabela; nomeCompletoDe é o campo que conté o nome do dependente relacionado ao respectivo funcionário. É um campo de valor único pelo fato que un funcionário pode ter mais de um dependente, portanto, com nomes restritamentes diferentes; dataNascientoDe campo que armazena a data de aniversário do dependente em questão; sexoDe campo que representa o sexo do dependente. É feito um CHECK sobre este campo para os valores F(feminino) ou M(masculino); */ CREATE TABLE dependente( idFu NUMBER(5) NOT NULL, -- Chave Primária e Estrangeira nomeCompletoDe VARCHAR2(50) NOT NULL, -- Chave Primária dataNascimentoDe DATE, -- DD/MM/YYYY sexoDe CHAR, -- 'M' ou 'F' CONSTRAINT CHECK_SEXO_DEPENDENTE CHECK(sexoDe IN ('M','F') ), CONSTRAINT PK_DEPEND PRIMARY KEY (idFu, nomeCompletoDe), -- idFu e NomeCompletoDe são as Chaves Primárias CONSTRAINT FK_DEPEND FOREIGN KEY(idFU) REFERENCES funcionario(idFu) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA GERENCIA: /* contém os funcionários e os departamentos que esses gerenciam podendo um funcionário gerenciar vários departamento porém em datas diferentes idDe assume os valores dos departamentos cadastrados. É Chave estrangeira nesse caso; idFu assume os valores dos empregados cadastrados. É Chave Estrangeira nesse caso; dataInicioGe campo que representa a data que um funcionário começou a gerenciar um dado departamento; dataFimGe quando o funcionário parar de genciar o departamento, então a data de sua saída será armazenda. Por DEFAULT é nulo, assim, isso indica que o funcionário ainda está gerenciando o respectivo departamento; */ CREATE TABLE gerencia( idDe NUMBER(3) NOT NULL, idFu NUMBER(5) NOT NULL, dataInicioGe DATE NOT NULL, -- DD/MM/YYYY dataFimGe DATE DEFAULT NULL, CONSTRAINT PK_GERENCIA PRIMARY KEY (idDe, idFu, dataInicioGe), -- idDe, idFu e dataInicioGe juntas compõem a Chave Primária CONSTRAINT FK_GERENCIA_DEPTO FOREIGN KEY(idDe) REFERENCES departamento(idDe) ON DELETE CASCADE, CONSTRAINT FK_GERENCIA_FUNC FOREIGN KEY(idFU) REFERENCES funcionario(idFu) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA TRABALHO: /* contém os funcionários e os departamentos que esses trabalham podendo um funcionário trabalhar em vários departamento porém em datas diferentes idDe assume os valores dos departamentos cadastrados. É Chave estrangeira nesse caso; idFu assume os valores dos empregados cadastrados. É Chave Estrangeira nesse caso; dataInicioTr campo que representa a data que um funcionário começou a trabalhar em um dado departamento; dataFimTr quando o funcionário parar de trabalhar em um departamento, então a data de sua saída será armazenda. Por DEFAULT é nulo, assim, isso indica que o funcionário ainda está trabalhando no respectivo departamento; */ CREATE TABLE trabalho( idDe NUMBER(3) NOT NULL, idFu NUMBER(5) NOT NULL, dataInicioTr DATE NOT NULL, dataFimTr DATE DEFAULT NULL, -- DD/MM/YYYY CONSTRAINT PK_TRABALHO PRIMARY KEY (idDe, idFu, dataInicioTr), -- idDe, idFu e dataInicioTr juntas compõem a Chave Primária CONSTRAINT FK_TRABALHO_DEPTO FOREIGN KEY(idDe) REFERENCES departamento(idDe) ON DELETE CASCADE, CONSTRAINT FK_TRABALHO_FUNC FOREIGN KEY(idFU) REFERENCES funcionario(idFu) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA FILME: /* contém informações sobre um dado filme apresentado pela emissora. Informações como: idPr campo de identificação do programa, no caso filme. É Chave Primária; tituloPr representa o nome do filme; descricaoPr campo que contém as informações sobre aquele título; idDe é uma Chave Estrangeira que tem o valor de um dado departamento no qual o programa(filme) faz parte; producaoNacionalEn campo que indica se o filme é de origem nacional ou estrangeira. Se '0', indica estrangeira. Se um, '1' indica nacional; anoLancamentoFi campo que armazena a data do lançamento do filme; duracaoFi campo que armazena a duração do filme em minutos; generoFi campo que represente um dado gênero de filme */ CREATE TABLE filme( idPr NUMBER(5) NOT NULL, -- Chave Primária tituloPr VARCHAR2(30), descricaoPr VARCHAR2(1024), idDe NUMBER(3) NOT NULL, -- Chave Estrangeira producaoNacionalEn NUMBER, -- 1 ou 0 anoLancamentoFi VARCHAR2(4), -- YYYY duracaoFi NUMBER(3), -- valor em minutos generoFi VARCHAR(20), CONSTRAINT CHECK_PRODNACIONAL_FILME CHECK(producaoNacionalEn IN (0,1) ), CONSTRAINT PK_FILME PRIMARY KEY (idPr), CONSTRAINT FK_FILME_DEPTO FOREIGN KEY(idDe) REFERENCES departamento(idDe) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA EXIBICAOFILME: /* contém informações sobre a exibição de um determinado filme. Um filme pode ser apresentado várias vezes, no mesmo dia inclusive, porém em horários difentes. idPr representa o id do filme. É Chave Primaria e Estrangeira; dataExFi campo com a data de exibição do respectivo filme; horaInicioExJo campo com a hora de exibição do respectivo filme; horaFimExFi campo com a hora de termino de exibição do respectivo filme; ibopeExFi indica quantos pontos no ibope aquela exibição conseguiu; */ CREATE TABLE exibicaoFilme( idPr NUMBER(5) NOT NULL, dataExFi DATE NOT NULL, horaInicioExFi TIMESTAMP NOT NULL, horaFimExFi TIMESTAMP, ibopeExFi NUMBER(3), CONSTRAINT PK_EXIBF PRIMARY KEY(idPr, dataExFi, horaInicioExFi), -- idPr, dataExFi horaInicioExFi juntas, compõem a Chave Primária CONSTRAINT FK_EXIBF_FILME FOREIGN KEY(idPr) REFERENCES filme(idPr) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA SERIE: /* contém informações sobre uma dada série apresentada pela emissora. Informações como: idPr campo de identificação do programa, no caso uma série. É Chave Primária; tituloPr representa o nome da série; descricaoPr campo que contém as informações sobre aquele título; idDe é uma Chave Estrangeira que tem o valor de um dado departamento no qual o programa(filme) faz parte; producaoNacionalEn campo que indica se o filme é de origem nacional ou estrangeira. Se '0', indica estrangeira. Se um, '1' indica nacional; generoSe campo que represente um dado gênero de série; nroTemporadasSe campo que representa o número de temporadas para aquela série calculado através da contagem do número de temporadas armazenadas na tabela TEMPORADA dada uma dada série; No momento desta inserção o nroTemporadasSe tem o valor 0, pois não há informações ainda sobre as temporadas; */ CREATE TABLE serie( idPr NUMBER(5) NOT NULL, -- Chave Primária tituloPr VARCHAR2(30), descricaoPr VARCHAR2(1024), idDe NUMBER(3) NOT NULL, producaoNacionalEn NUMBER, -- 0 ou 1 generoSe VARCHAR2(30), nroTemporadasSe NUMBER(2) DEFAULT 0, CONSTRAINT CHECK_PRODNACIONAL_SERIE CHECK(producaoNacionalEn IN (0,1) ), CONSTRAINT PK_SERIE PRIMARY KEY(idPr), CONSTRAINT FK_SERIE_DEPTO FOREIGN KEY(idDe) REFERENCES departamento(idDe) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA TEMPORADA: /* contém informações sobre uma determina temporada no qual: idPr é um campo que assume um valor de id correspondente a uma série. E é uma das Chaves Primária desta tabela; nroTe campo que armazena o número de uma temporada específica. é a outra Chave Primária desta tabela; descricaoTe campo que contém informações para uma dada tempodarada de uma série; nroEpisodiosTe campo que representa o número de episódios para uma daterminada temporada dada a série, é calculado através da contagem do número de episódios armazenadas na tabela EPISODIOSERIE dada uma dada série e temporada; No momento desta inserção o nroEpisodiosTe tem o valor 0, pois não há informações ainda sobre os episódios; */ CREATE TABLE temporada( idPr NUMBER(5) NOT NULL, nroTe NUMBER(2) NOT NULL, descricaoTe VARCHAR2(512), nroEpisodiosTe NUMBER(2) DEFAULT 0, CONSTRAINT PK_TEMPORADA PRIMARY KEY(idPr, nroTe), -- idPr e nroTe compõem juntas, a Chave Primária CONSTRAINT FK_TEMP_SERIE FOREIGN KEY(idPr) REFERENCES serie(idPr) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA EPISODIOSERIE: /* contém informações sobre os episódios de uma série dada uma determinada temporada no qual: idPr é um campo que assume um valor de id correspondente a uma série. E é uma das Chaves Primária desta tabela; nroTe é um campo que assume um valor de id de uma temporada específica. E é uma das Chaves Primária desta tabela; nroEpSe é um campo que assume um valor que identifica um episódio específico; tituloEpSe campo que armazena o título do episódio específico de acordo com a série e temporada; resumoEpSe campo que tem informações que descrevem um dado episódio; duracaoEpSe campo que armazena o tempo de duração do episódio em minutos; */ CREATE TABLE episodioSerie( idPr NUMBER(5) NOT NULL, nroTe NUMBER(2) NOT NULL, nroEpSe NUMBER(3) NOT NULL, tituloEpSe VARCHAR2(30), resumoEpSe VARCHAR2(512), duracaoEpSe NUMBER(3), -- valor em minutos CONSTRAINT PK_EPSERIE PRIMARY KEY(idPr, nroTe, nroEpSe), -- idPr, nroTe e nroEpSe compõem juntas, a Chave Primária CONSTRAINT FK_EPSERIE_TEMP FOREIGN KEY(idPr, nroTe) REFERENCES temporada(idPr, nroTe) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA EXIBICAOSERIE: /* contém informações sobre a exibição de um determinado episódio de uma determinada temporada de uma determinada série. Uma série pode ser apresentada várias vezes, no mesmo dia inclusive, porém em horários diferentes. idPr é um campo que assume um valor de id correspondente a uma série. E é uma das Chaves Primária desta tabela; nroTe é um campo que assume um valor de id de uma temporada específica. E é uma das Chaves Primária desta tabela; nroEpSe é um campo que assume um valor que identifica um episódio específico; É uma das Chaves Primária desta tabela; dataExSe campo com a data de exibição da respectiva série; horaInicoExSe campo com a hora de exibição da respectiva série; horaFimExSe campo com a hora de término da exibição da respectiva série; ibopeExSe indica quantos pontos no ibope aquela exibição conseguiu; */ CREATE TABLE exibicaoSerie( idPr NUMBER(5) NOT NULL, nroTe NUMBER(2) NOT NULL, nroEpSe NUMBER(3) NOT NULL, dataExSe DATE NOT NULL, horaInicioExSe TIMESTAMP NOT NULL, horaFimExSe TIMESTAMP, ibopeExSe NUMBER(3), CONSTRAINT PK_EXSERIE PRIMARY KEY(idPr, nroTe, nroEpSe,dataExSe, horaInicioExSe), CONSTRAINT FK_EXSERIE_EPSERIE FOREIGN KEY(idPr, nroTe, nroEpSe) REFERENCES episodioSerie(idPr, nroTe, nroEpSe) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA JORNAL: /* contém informações sobre um dado jonal apresentado pela emissora. Informações como: idPr campo de identificação do programa, no caso jornal. É Chave Primária; tituloPr representa o nome do jornal; descricaoPr campo que contém as informações sobre aquele título em questão; idDe é uma Chave Estrangeira que tem o valor de um dado departamento no qual o programa(jornal) faz parte; duracaoJo campo que armazena a duração do jornal em minutos; abrangenciaJo campo que indica se o jornal é de abrangência Nacional ou Regional; */ CREATE TABLE jornal( idPr NUMBER(5) NOT NULL, tituloPr VARCHAR2(30), descricaoPr VARCHAR2(250), idDe NUMBER(3) NOT NULL, duracaoJo NUMBER(3), -- valor em minutos abrangenciaJo VARCHAR2(10), CONSTRAINT CHECK_ABRANGENCIAJO_JORNAL CHECK(abrangenciaJo IN ('Nacional','Regional') ), CONSTRAINT PK_JORNAL PRIMARY KEY(idPr), CONSTRAINT FK_JORNAL_DEPTO FOREIGN KEY(idDe) REFERENCES departamento(idDe) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA EXIBICAOJORNAL: /* contém informações sobre a exibição de um determinado jornal. Um jornal pode ser apresentado várias vezes, no mesmo dia inclusive, porém em horários difentes. idPr representa o id do jornal. É uma das Chaves Primária e é uma Chave Estrangeira; idFu campo que tem como valor um id de funcionário. Assim é possível saber quem apresentou cada jornal. É uma das Chaves Primária e é uma Chave Estrangeira;; dataExJo campo com a data de exibição do respectivo jornal; horaInicioExJo campo com a hora de exibição do respectivo jornal; horaFimExJo campo com a hora de termino de exibição do respectivo jornal; ibopeExJo indica quantos pontos no ibope aquela exibição conseguiu; */ CREATE TABLE exibicaoJornal( idPr NUMBER(5) NOT NULL, idFu NUMBER(5) NOT NULL, dataExJo DATE NOT NULL, horaInicioExJo TIMESTAMP NOT NULL, horaFimExJo TIMESTAMP, ibopeExJo NUMBER(3), CONSTRAINT PK_EXJORNAL PRIMARY KEY(idPr, idFu, dataExJo, horaInicioExJo), CONSTRAINT FK_EXJORNAL_FUNC FOREIGN KEY(idFu) REFERENCES funcionario(idFu) ON DELETE CASCADE, CONSTRAINT FK_EXJORNAL_JORNAL FOREIGN KEY(idPr) REFERENCES jornal(idPr) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA COMERCIAL: /* contém informações sobre um dado comercial apresentado pela emissora. Informações como: idPr campo de identificação do programa, no caso comercial. É Chave Primária; tituloPr representa o nome do comercial; descricaoPr campo que contém as informações sobre aquele título em questão; idDe é uma Chave Estrangeira que tem o valor de um dado departamento no qual o programa(comercial) faz parte; */ CREATE TABLE comercial( idPr NUMBER(5) NOT NULL, -- Chave Primária tituloPr VARCHAR2(30), descricaoPr VARCHAR2(250), idDe NUMBER(3) NOT NULL, -- Chave Estrangeira CONSTRAINT PK_COMERCIAL PRIMARY KEY(idPr), CONSTRAINT FK_COMERCIAL_DEPTO FOREIGN KEY(idDe) REFERENCES departamento(idDe) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA CLIENTE: /* contém os dados de clientes no qual: cnpjCl representa o CNPJ do cliente da emissora. É a Chave Primária desta tabela; nomeCompletoCl é o campo que armazena o nome real do cliente, é unico, não deve haver valor igual; nomeFantasiaEm é o campo que armazena um nome fantasia para o respectivo cliente; */ CREATE TABLE cliente( cnpjCl NUMBER(14) NOT NULL, nomeCompletoCl VARCHAR2(100) NOT NULL, nomeFantasiaCl VARCHAR(100), CONSTRAINT PK_CLIENTE PRIMARY KEY(cnpjCl), CONSTRAINT UN_CLIENTE UNIQUE(nomeCompletoCl) ); / / -- COMANDO DE CRIAÇÃO DA TABELA EXIBICAOCOMERCIAL: /* contém informações sobre a exibição de um determinado comercial. Um comercial pode ser apresentado várias vezes, no mesmo dia inclusive, porém em horários difentes. idPr representa o id do comercial. É uma das Chaves Primária e é uma Chave Estrangeira; dataExCo campo com a data de exibição do respectivo comercial; horaInicioExCo campo com a hora de exibição do respectivo comercial; horaFimExCo campo com a hora de término de exibição do respectivo comercial; precoExCo campo com valor do preço do comercial, é obitido através da tarifação por segundo de uma determinada faixa de horários, por seguinte ela é multiplicada por x segundos o quanto durou a exibição do comercial. A duração de um comercial pode abranger duaas ou mais faixas de tarifação diferentes. Nesse caso, o preço do comercial é calculado usndo como base apenas a primeira tarifação. No momento desta inserção, o valor do preExCo é '0,00', o calculo é feito posteriormente, no final da execução deste script; cnpjCl campo que armazena o valor do CNPJ do cliente, indica quem é o cliente ao qual o comercial pertence; */ CREATE TABLE exibicaoComercial( idPr NUMBER(5) NOT NULL, dataExCo TIMESTAMP NOT NULL, horaInicioExCo TIMESTAMP NOT NULL, horaFimExCo TIMESTAMP, precoExCo NUMBER(10,2) DEFAULT '0,00', cnpjCl NUMBER(14) NOT NULL, CONSTRAINT PK_EXCOMERCIAL PRIMARY KEY(idPr, dataExCo, horaInicioExCo), CONSTRAINT FK_EXCOMERCIAL_COMERCIAL FOREIGN KEY(idPr) REFERENCES comercial(idPr) ON DELETE CASCADE, CONSTRAINT FK_EXCOMERCIAL_CLIENTE FOREIGN KEY(cnpjCl) REFERENCES cliente(cnpjCl) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA NOVELA: /* contém informações sobre uma dada novela apresentada pela emissora. Informações como: idPr campo de identificação do programa, no caso uma novela. É Chave Primária; tituloPr representa o nome da novela; descricaoPr campo que contém as informações sobre aquele título; idDe é uma Chave Estrangeira que tem o valor de um dado departamento no qual o programa(novela) faz parte; producaoNacionalEn campo que indica se a novela é de origem nacional ou estrangeira. Se '0', indica estrangeira. Se um, '1' indica nacional; */ CREATE TABLE novela( idPr NUMBER(5) NOT NULL, tituloPr VARCHAR2(30) NOT NULL, descricaoPr VARCHAR2(1024), idDe NUMBER(3) NOT NULL, producaoNacionalEn NUMBER, CONSTRAINT CHECK_PRODNACIONAL_NOVELA CHECK(producaoNacionalEn IN (0,1) ), CONSTRAINT PK_NOVELA PRIMARY KEY(idPr), CONSTRAINT UN_NOVELA UNIQUE(tituloPr), CONSTRAINT FK_NOVELA_DEPTO FOREIGN KEY(idDe) REFERENCES departamento(idDe) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA EPISODIONOVELA: /* contém informações sobre os episódios de uma novela: idPr é um campo que assume um valor de id correspondente a uma novela. E é uma das Chaves Primária desta tabela; nroEpNo é um campo que assume um valor que identifica um episódio específico; resumoEpNo campo que tem informações que descrevem um dado episódio; duracaoEpNo campo que armazena o tempo de duração do episódio em minutos; */ CREATE TABLE episodioNovela( idPr NUMBER(5) NOT NULL, nroEpNo NUMBER(3) NOT NULL, resumoEpNo VARCHAR2(250), duracaoEpNo NUMBER(3), CONSTRAINT PK_EPNOVELA PRIMARY KEY(idPr, nroEpNo), CONSTRAINT FK_EPNOVELA_NOVELA FOREIGN KEY(idPr) REFERENCES novela(idPr) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA EXIBICAONOVELA: /* contém informações sobre a exibição de um determinado episódio de uma determinada novela. Uma novela pode ser apresentada várias vezes, no mesmo dia inclusive, porém em horários diferentes. idPr é um campo que assume um valor de id correspondente a uma novela. E é uma das Chaves Primária desta tabela; nroEpNo é um campo que assume um valor que identifica um episódio específico; É uma das Chaves Primária desta tabela; dataExNo campo com a data de exibição da respectiva novela; horaInicioExNo campo com a hora de exibição da respectiva novela; horaFimExNo campo com a hora de término da exibição da respectiva novela; ibopeExNo indica quantos pontos no ibope aquela exibição conseguiu; */ CREATE TABLE exibicaoNovela( idPr NUMBER(5) NOT NULL, nroEpNo NUMBER(3) NOT NULL, dataExNo DATE NOT NULL, horaInicioExNo TIMESTAMP NOT NULL, horaFimExNo TIMESTAMP, ibopeExNo NUMBER(2), CONSTRAINT PK_EXNOVELA PRIMARY KEY(idPr, nroEpNo, dataExNo, horaInicioExNo), CONSTRAINT FK_EXNOVELA_EPONOVELA FOREIGN KEY(idPr, nroEpNo) REFERENCES episodioNovela(idPr, nroEpNo) ON DELETE CASCADE ); / / -- COMANDO DE CRIAÇÃO DA TABELA VALORCOMERCIAL: /* contém informções de referência cpm tarifação por segundo dos horários disponíveis para comercial anoVaCo campo que armazena um dado ano, para definir os respecitovos valores de tarifação neste ano; diaSemanaVaCo campo com valor de dias da semana; horaInicioVaCo campo que armazena hora que inicia dada tarifação; precoPorSegundoVaCo campo que armazena o valor da tarifação por segundo da exibição de um dado comercial naquela faixa de horário; */ CREATE TABLE valorComercial( anoVaCo NUMBER(4) NOT NULL, diaSemanaVaCo VARCHAR2(15) NOT NULL, horaInicioVaCo TIMESTAMP NOT NULL, precoPorSegundoVaCo NUMBER(7,2), CONSTRAINT PK_VLCOMERCIAL PRIMARY KEY(anoVaCo, diaSemanaVaCo, horaInicioVaCo) ); / / -- Cria sequência para IdDe da tabela Departamento CREATE SEQUENCE SEQ_IDDE_DEPTO MINVALUE 0 START WITH 1 INCREMENT BY 1; / / -- Cria sequência para IdFu da tabela Funcionario CREATE SEQUENCE SEQ_IDFU_TIPO_FUNC MINVALUE 0 START WITH 1 INCREMENT BY 1; / / -- Cria sequência para cpfFu da tabela Funcionario CREATE SEQUENCE SEQ_CPFFU_FUNC START WITH 11122233300 INCREMENT BY 1; / / -- Cria sequência para IdFu da tabela Funcionario CREATE SEQUENCE SEQ_IDFU_FUNC MINVALUE 0 START WITH 1 INCREMENT BY 1; / / -- Cria sequência para IdPrda tabela Filme CREATE SEQUENCE SEQ_IDPR_FILME MINVALUE 0 START WITH 1 INCREMENT BY 1; / / -- Cria sequência para IdPr da tabela Serie CREATE SEQUENCE SEQ_IDPR_SERIE MINVALUE 0 START WITH 1 INCREMENT BY 1; / / -- Cria sequência para IdPr da tabela Jornal CREATE SEQUENCE SEQ_IDPR_JORNAL MINVALUE 0 START WITH 1 INCREMENT BY 1; / / -- Cria sequência para IdPr da tabela Comercial CREATE SEQUENCE SEQ_IDPR_COMERCIAL MINVALUE 0 START WITH 1 INCREMENT BY 1; / / -- Cria sequência para IdPr da tabela Novela CREATE SEQUENCE SEQ_IDPR_NOVELA MINVALUE 0 START WITH 1 INCREMENT BY 1;