laboratório de banco de dados

Propaganda
LABORATÓRIO DE BANCO DE DADOS
Integridade Referencial
DEFINIÇÃO DA ESTRUTURA DE TABELAS
A definição de uma tabela , por meio da DDL, sub-linguagem da SQL, é realizada por meio do comando
CREATE TABLE. Por meio deste comando defini-se o nome da tabela, seus respectivos campos suas restrições e
seus elos com outras tabelas do banco de dados.
Sintaxe da DDL para definição de tabelas:
CREATE TABLE nome_tabela (
CampoA domínio de dado ,
CampoB domínio de dado,
CampoC domínio de dado,
...
Restrição1,
...
Restriçãon)
Na definição de cada tabela podemos determinar as regras para garantir a integridade
REGRAS DE INTEGRIDADE
A inserção de regras de integridade tem por objetivo e garantir que mudança – inserções, alterações e
exclusões, não venham a gerar a perda da consistência dos dados.
1) Restrição de Domínio
Limitam o domínio para cada coluna da tabela a ser gerada.
Caso 1: definição do tipo de dado para os campos da tabela
Notação: Nome_campo TIPO_DOMÍNIO
Ex:
Nome varchar(35),
Salario decimal(10,2),
Matricula integer
Obs::
 O tipo de dado é uma restrição de domínio obrigatória em qualquer SGBD
 Os tipos de dados podem variar de SGBD
Caso 2: Obrigatoriedade de um valor para o campo da tabela
Notação Nome_campo tipo_domínio NOT NULL
Ex:
Nome Char(35) not null,
Salario decimal(10,2) not null,
Matricula integer not null,
Caso 3: valor único para um determinado campo da tabela
Notação Nome_campo tipo_domínio UNIQUE
Ex:
Nota de Aula – Banco de Dados
Prof. Sidney Vieira
Matricula integer unique not null,
1
Caso 3: valor limitado para um determinado campo da tabela. Neste caso devemos primeiro criar um domínio
especifico e depois utilizado na definição de um campo da tabela
Notação:
CREATE DOMAIN c nome_dominio tipo_de_dado check (value in (valor1, valor2,valor3, ..., valorn) )
Obs: As aspas são utilizadas quando o tipo de dados for não numérico
Ex:
CREATE DOMAIN Tipo_salario decimal(10,2) check (value in ( 350, 500, 800,1000))
….
Matricula integer unique not null,
2) Integridade de Identidade
A definição da integridade de identidade é realizada por meio da chave primária. Ela não pode conter valor
nulo, zero, carácter em branco e qualquer outra situação que caracterize a inexistência do conteúdo deste campo.
Notação: Primary Key(nome_campo)
Ex:
Matricula integer unique not null,
Nome varchar(35) not null,
Salario Tipo_salário,
Primary Key (matricula),
3) Integridade Referencial
A integridade referencial garante que a referência feita em uma tupla ( linha) de uma tabela, a outra tupla em
outra tabela(ou na mesma), não perca sua consistente. Ela é feita por meio da chave estrangeira.
Notação: Foreign Key(nome_campo) references nome_tabela( nome_campo)
Ex:
Matricula integer unique not null,
Nome varchar(35) not null,
Salario Tipo_salário,
Cod_departamento integer,
Primary Key (matricula),
FOREING KEY ( cod_departamento) REFERENCES Departamento(cod_dept),
Onde: cod_dept é a chave primário da tabela departamento
3.1 Variações para a Integridade Referencial
Define o que será feito quando ocorrer uma exclusão ou alteração do valor na tagela a qual é feita a
referencia.
FOREIGN KEY (nome_campo) REFERENCES nome_tabela(nome_campo) [ ONDELETE | UPDATE ] [
SET NULL | CASTADE | NO ACTION]
NO ACTION – não permite a exclusão da linha caso exista uma referencia dela na tabela
CASCADE – apaga todas as linhas que possuírem o campo referenciado com o valor com o mesmo valor do
campo que está sendo excluído na outra tabela
SET NULL – Coloca o valor nulo no campo em todos os campos que possuem o valor que está sendo excluído
na outra tabela.
Nota de Aula – Banco de Dados
Prof. Sidney Vieira
2
Exemplo:
funcionario
Departamento
CREATE TABLE funcionario (
Matricula int not null primary key,
nome varchar(50),
...
cod_departa varchar(2),
FOREIGN KEY ( cod_departa) REFERENCES Departamento(cod_dept) ONDELETE CASCADE)
)
CREATE TABLE departamento (
cod_dept varchar(2) not null primary key,
nome var char(40),
...
)
Quando uma linha da tabela departamento for de
For excluida todas a linhas da tabela funcionario
que apontam para o referido departamento
por meio do campo cod_departa serão
excluidos
Exemplo:
CREATE TABLE funcionario (
Matricula
int NOT NULL,
Nome
varchar(20),
CPF
varchar(13) unique,
Salario
decimal(5,2),
Endereço
vachar(50),
cod_departa
char(2),
PRIMARY KEY (matricula),
FOREING KEY ( cod_departamento) REFERENCES departamento (cod_dept) ONDELETE CASCADE )
4) Constraint
A definição de CONSTRAINT como elemento de uma tabela permite nomear as restrições realizadas para
garantir a integridade do banco de dados. Isto facilita posteriormente a remoção da restrição sem que o campo com
os seus respectivos valores de dados sejam excluídos.
Nota de Aula – Banco de Dados
Prof. Sidney Vieira
3
CREATE TABLE funcionario (
Matricula
char(5) NOT NULL,
Nome
varchar(20),
CPF
varchar(13),
Salario
decimal(5,2),
Endereço
varchar(50),
codigo_depart char(2),
CONSTRAINT checksalario check salario > 350,00
CONSTRAINT PK_matri PRIMARY KEY (matricula),
CONSTRAINT UC_cpf unique(cpf),
CONSTRAINT FK_depto FOREIGN KEY ( cod_departamento) REFERENCES departamento (cod_dept)
ONDELETE CASCADE
)
Uma restrição pode ser deletada a qualquer momento do banco de dados. Se não mais proceder a regra do
valor do CPF ser único basta deletar a restrição uc_cpf, que o campo cpf passa a poder ter valores repetidos.
Nota de Aula – Banco de Dados
Prof. Sidney Vieira
4
Download