Lab02
Transcrição
Lab02
1. Integridade referencial. Analise e execute o script LAB2.SQL. Ele cria as seguintes tabelas adicionando uma linha a cada uma delas. CEPS CD_CEP: NUMBER(5) NM_CIDADE: VARCHAR2(30) EMPREGADOS NR_EMPREGADO: NUMBER(4) NM_EMPREGADO: VARCHAR2(30) CD_CEP: NUMBER(5) DT_CONTRATA: DATE a) Tente excluir os registros da tabela CEPS (DELETE FROM CEPS) ou excluir a tabela como um todo (utilize o comando DROP). Verifique as mensagens. O que elas indicam? ORA-02292: integrity constraint ... violated - child record found ORA-02449: unique/primary keys in table referenced by foreign keys b) Tente inserir uma nova linha em cada uma das tabelas repetindo as chaves primárias existentes. Verifique a mensagens para cada uma das tabelas as mensagens produzidas. No que elas diferem? ORA-00001: unique constraint ... violated Altere o CREATE da tabela EMPREGADOS definindo um nome para a chave primária, a exemplo do CREATE da tabela CEPS e tente inserir novamente uma chave duplicada. c) Tente inserir na tabela EMPREGADOS o empregado de nr_empregado 2, com o seu nome e cep. Verifique a mensagem. ORA-02291: integrity constraint ... violated - parent key not found. Faça então a alteração necessária para inclusão do empregado. Neste exercício você verificou como os bancos de dados buscam garantir as integridades referenciais definidas (aqui PK e FK). Adotaremos, como boa prática, sempre que possível definir nomes para as constraints para facilitar o diagnóticos de erros e violações de constratints. 2. CLIENTES e NOT NULL. Crie a tabela CLIENTES conforme o modelo abaixo. Atribua nomes padrão para as constraints empregadas. Acrescente a constraint NOT NULL para os atributos de nome do Cliente e Rua (cláusula NOT NULL após o tipo/tamanho do atributo). Insira ao menos 2 registros de clientes e verifique as mensagens apontadas no caso da tentativa de inserirem-se registros com NULL nos atributos de nome do Cliente e Rua. PEDIDOS CLIENTES NR_PEDIDO: NUMBER(5) NR_CLIENTE: NUMBER(5) NR_CLIENTE: NUMBER(5) NR_EMPREGADO: NUMBER(4) DT_PEDIDO: DATE TIPO: CHAR(1) DT_ENTREGA: DATE NM_CLIENTE: VARCHAR2(30) NM_RUA: VARCHAR2(30) CD_CEP: NUMBER(5) NR_TELEFONE: CHAR(12) EMPREGADOS NR_EMPREGADO: NUMBER(4) NM_EMPREGADO: VARCHAR2(30) CD_CEP: NUMBER(5) DT_CONTRATA: DATE CEPS CD_CEP: NUMBER(5) NM_CIDADE: VARCHAR2(30) 3. PEDIDOS e CHECK. Crie a tabela PEDIDOS conforme o modelo anterior. Atribua nomes padrão para as constraints empregadas. Acrescente a constraint NOT NULL para os atributos de tipo e data do pedido. Acrescente ainda a cláusula CHECK para o atributo TIPO (veja exemplo abaixo) restringindo seus valores para os tipos 'E', 'C' e 'D' (especial, comum e direto). Insira ao menos 2 pedidos e verifique as mensagens apontadas no caso da tentativa de inserirem-se registros tipos de pedido inválido. Exemplo de definição da constraint CHECK: create table tabela ( nome varchar2(30) primary key, sexo char(1), constraint CK_TABELA_SEXO check (sexo in ('F','M')))
Documentos relacionados
Oracle SQL – Capitulo9
ORA-02291: integrity constraint (HR.EMP_DEPT_FK) violated - parent key not found
Leia mais