A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Modelo Relacional + SQL Prof. Daniel Callegari Material elaborado pela Prof. Karin Becker.

Apresentações semelhantes


Apresentação em tema: "Modelo Relacional + SQL Prof. Daniel Callegari Material elaborado pela Prof. Karin Becker."— Transcrição da apresentação:

1 Modelo Relacional + SQL Prof. Daniel Callegari Material elaborado pela Prof. Karin Becker

2 Modelo Relacional Codd, E.F A relational model of data for large shared data banks. Communications of the ACM, 13(6):377-87, June Objetivos Independência de dados ordem indexação caminhos de acesso Reduzir insconsistências regras de projeto (normalização)

3 Modelo Relacional Informal Uma base de dados vista pelos usuários como um conjunto de tabelas (e nada além de tabelas) Formal Aplicação de princípios matemáticos Relação (subconjunto do produto cartesiano de conjuntos) Álgebra Relacional

4 Modelo Relacional : Formal CODCIDADES NOME C1 C2 C4 C3 C5... João Pedro José Maria... RJ SP POA Londres... NY DOMÍNIO TUPLA RELAÇÃO XX

5 Definições Domínio conjunto de valores atômicos Relação Dados os conjuntos S1, S2,.., Sn (não necessariamente distintos), R é uma relação nestes n conjuntos se ele é um conjunto de tuplas onde v1 S1, v2 S2,... e vn Sn. A relação R é um subconjunto do produto cartesiano S1 X S2 X... X Sn.

6 Banco de Dados Relacional Esquema Definição das relações Instâncias (extensão) Conjunto de tuplas que compõem as relacões Para cada relação define-se, usando a DDL disponível: nome atributos restrições de integridade chave primária, chave alternativa chave estrangeira valores nulos dependentes do UdD

7 DDL e DML Data Definition Language (DDL) – Comandos definem estrutura ou esquema do banco de dados. Exemplos: CREATE ALTER DROP TRUNCATE COMMENT RENAME Data Manipulation Language (DML) – Comandos gerenciam dados dentro dos objetos do esquema. Exemplos: SELECT INSERT UPDATE DELETE CALL EXPLAIN PLAN LOCK TABLE

8 DCL e TCL Data Control Language (DCL) – Exemplos: GRANT REVOKE Transaction Control (TCL) – Comandos usados para gerenciar as mudanças feitas por comandos DML. Permitem que comandos sejam agrupados em transações lógicas. COMMIT SAVEPOINT ROLLBACK SET TRANSACTION (isolation level, rollback segment)

9 Restrições de Integridade do Modelo Relacional Restrições de Integridade (RI) que se aplicam a todo modelo que se diz conforme ao modelo relacional Integridade de Identidade Chave primária Chave alternativa Chave estrangeira Valor nulo Integridade Referencial

10 Integridade de Identidade : Conceitos Integridade de Identidade Nenhum atributo que participe de uma chave candidata de uma relação pode assumir valor nulo Valor nulo (NOT NULL) Tuplas incompletas Chave Candidata Grupo mínimo de atributos tal que a combinação de valores assumida por este grupo corresponde a no máximo uma tupla Chave Primária (PRIMARY KEY) Uma entre as chaves candidatas Selecionada pelo projetista por conveniencia de desempenho Uma relação possui uma e somente uma chave primária Chave Alternativa (UNIQUE) Toda chave candidata que não for chave primária

11 SQL92 CREATE TABLE ( [NOT NULL] [, [NOT NULL]]* [, PRIMARY KEY (atr-name(s))] [, UNIQUE (atr-name(s))]*); CREATE [UNIQUE] INDEX ON (atr-name(s));

12 Exemplos CREATE TABLE DEPARTAMENTO (cod NUMBER(2) NOT NULL, nome VARCHAR(15) NOT NULL, ramal CHAR(4), PRIMARY KEY (cod)); CREATE TABLE EMPREGADO (cpf CHAR(8) NOT NULL, rg CHAR(10) NOT NULL, nome VARCHAR(60) NOT NULL, nascimento DATE NOT NULL, salario MONEY, dep NUMBER(2), gerente CHAR(8), PRIMARY KEY (cpf), UNIQUE(rg), UNIQUE (nome, nascimento));

13 Exemplos CREATE TABLE EMPREGADO (cpf CHAR(8) NOT NULL, rg CHAR(10) NOT NULL, nome VARCHAR(60) NOT NULL, nascimento DATE NOT NULL, PRIMARY KEY (cpf), UNIQUE(rg), UNIQUE (nome, nascimento)); CREATE TABLE EMPREGADO (cpf CHAR(8) NOT NULL PRIMARY KEY, rg CHAR(10) NOT NULL UNIQUE, nome VARCHAR(60) NOT NULL, nascimento DATE NOT NULL, UNIQUE (nome, nascimento));

14 Integridade Referencial Chave Estrangeira: Forma de implementar relacionamentos/associações no modelo relacional Não necessariamente a chave estrangeira participa da chave primária da relação que a contém (S) Integridade Referencial: Se uma relação S inclui uma chave estrangeira S-FK equivalendo à chave primária R-PK de uma relação R, então todo valor S-FK em S deve ser : Igual ao valor de R-PK em alguma tupla de R Nulo

15 Integridade Referencial: Trocando em miúdos Departamento CódigoNome 4620Fundamentos da Computação 4622Computação Aplicada Empregado CódigoNomeDeptoSuperior 1Ir. Clotet 2Avelino Rodrigo46222 Primary Key = Código Foreign Keys: Depto Departamento.Código Superior Empregado.Código S-FK = DeptoR-PK = Código S-FK = Superior

16 Integridade Referencial: Anomalias de Atualização As atualizações na base de dados podem causar violações da integridade referencial

17 Integridade Referencial: Anomalias de Atualização Enunciado : Sejam R e S duas relações. R-PK a chave primária de R S-FK uma chave estrangeira em S que corresponde à R-PK de R. Seja v(t, k) uma função, onde t é uma tupla, e k um conjunto de um ou mais atributos, e que designe o valor do(s) atributo(s) k de uma tupla t. Inclusão: se uma tupla ts é inserida em S, o sistema precisa assegurar uma das opções abaixo: existe uma tupla tr em R tal que v(tr, R-PK) = v(ts, S-FK) v(ts, S-FK)= NULL possível somente se S-FK admitir valores nulos

18 Integridade Referencial: Trocando em miúdos Departamento CódigoNome 4620Fundamentos da Computação 4622Computação Aplicada Empregado CódigoNomeDeptoSuperior 1Ir. Clotet 2Avelino Rodrigo46222 Primary Key = Código Foreign Keys: Depto Departamento.Código Superior Empregado.Código S-FK = DeptoR-PK = Código S-FK = Superior

19 Integridade Referencial: Anomalias de Atualização Remoção: se uma tupla tr é removida de R, o sistema precisa computar o conjunto de tuplas ts i de S (i >= 0), onde é verificada a propriedade v(tr, R-PK) = v(ts i, S-FK). Se o conjunto não for vazio, as alternativas são: a supressão de tr é proibida suprime-se TAMBÉM todas as tuplas ts i do conjunto (EFEITO CASCATA !!) deve-se substituir TAMBÉM o valor de S-FK em cada tupla ts i por NULL (DEPENDE DA DEFINIÇÃO DE S-FK)

20 Integridade Referencial: Trocando em miúdos Departamento CódigoNome 4620Fundamentos da Computação 4622Computação Aplicada Empregado CódigoNomeDeptoSuperior 1Ir. Clotet 2Avelino Rodrigo46222 Primary Key = Código Foreign Keys: Depto Departamento.Código Superior Empregado.Código S-FK = DeptoR-PK = Código S-FK = Superior

21 Integridade Referencial: Anomalias de Atualização Alteração da S-FK (relação referenciadora S): Semelhante à inserção de tuplas em S Alteração da R-PK (relação referenciada R): Deve-se computar o conjunto de tuplas ts i de S, onde a propriedade v(tr, R-PK) = v(ts i, S-FK) é verificada. Se o conjunto não for vazio, as alternativas são: deve-se proibir a modificação altera-se TAMBÉM o valor de S-FK em todas as tuplas ts i do conjunto; deve-se TAMBÉM substituir o valor de S-FK por NULL em todas tuplas ts i DEPENDE DA DEFINIÇÃO DE S-FK

22 Integridade Referencial: Trocando em miúdos Departamento CódigoNome 4620Fundamentos da Computação 4622Computação Aplicada Empregado CódigoNomeDeptoSuperior 1Ir. Clotet 2Avelino Rodrigo46222 Primary Key = Código Foreign Keys: Depto Departamento.Código Superior Empregado.Código S-FK = DeptoR-PK = Código S-FK = Superior

23 Manutenção de Restrições de Integridade Restrições de Integridade do Modelo Relacional estruturam-se em termos de estados consistentes da base de dados Os modelos mais expressivos são aqueles que deixam expressar de forma declarativa, junto ao esquema, as políticas de manutenção de R.I. adotadas pela corporação E1 (consistente) E2 (consistente) operação rejeitar ! compensar !

24 SQL92 Definição de Chave estrangeira Política de Rejeição (default) a operação só não é rejeitada se não houver tuplas (chave estrangeira) fazendo referência a uma dada chave primária Políticas Compensatórias (EXPLICITAMENTE DECLARADAS) CASCADES : propaga a alteração/remoção de tuplas SET NULL : o valor da chave estrangeira é ajustado para valor nulo SET DEFAULT: o valor da chave estrangeira é ajustado para o valor default (inicial)

25 SQL92 Cláusula Foreign-Key FOREIGN KEY REFERENCES [( )] [ON DELETE ] [ON UPDATE ] := CASCADE | SET NULL | SET DEFAULT ESPECIFICADA NA TABELA QUE CONTÉM A CHAVE ESTRANGEIRA !!! POLÍTICAS COMPESATÓRIAS ESPECIFICAM CORREÇÕES NA TABELA QUE CONTÉM A CHAVE ESTRANGEIRA !!!!!

26 Exemplo CREATE TABLE DEPARTAMENTO (cod NUMBER(2) NOT NULL, nome VARCHAR(15) NOT NULL, ramal CHAR(4), PRIMARY KEY (cod)); CREATE TABLE EMPREGADO (cpf CHAR(8) NOT NULL, nome VARCHAR(60) NOT NULL, salario MONEY, dep NUMBER(2), gerente CHAR(8), PRIMARY KEY (cpf), FOREIGN KEY dep REFERENCES DEPARTAMENTO, FOREIGN KEY gerente REFERENCES EMPREGADO); Qual a política?

27 Exemplo CREATE TABLE EMPREGADO (cpf CHAR(8) NOT NULL, nome VARCHAR(60) NOT NULL, salario MONEY, dep NUMBER(2), gerente CHAR(8), PRIMARY KEY (cpf), FOREIGN KEY dep REFERENCES DEPARTAMENTO ON DELETE SET NULL ON UPDATE CASCADE FOREIGN KEY gerente REFERENCES EMPREGADO ON DELETE SET NULL; Qual a política?

28 DDL : Remoção de Objetos do Esquema drop table drop index drop view drop constraint (dentro de comando alter table!)

29 DDL : Restrições Definidas no comando create table ou alter table Tipos: unique primary key not null foreign key check(expressão) check(sexo in (f, m)) check(idade > 0 and idade <70) check(salario <> 0) check(cod between 1 and 10) check( )

30 DDL : Restrições create table conta ( cod number(5) not null, saldo number(7,2) not null check(saldo >=0), primary key (cod) ); create table cliente ( codc number(2) primary key, nomec varchar(60) not null, rg char(10) not null unique, cpf char(10) not null, idade number(2) check (idade between 16 and 90), mae varchar(60) not null, unique (cpf), unique(nomec, mae) );

31 DDL : Restrições create table conta( cod number(5) not null, saldo number(7,2) not null check(saldo >=0), primary key (cod) ); ou create table conta (cod number(5), saldo number(7,2)); alter table conta add check(cod is not null); alter table conta add check(saldo is not null and saldo>=0); alter table conta add constraint conta_pk primary key(cod);

32 DDL : Restrições ALTER TABLE ADD ::= | ::= CONSTRAINT ::= unique | check | primary key | foreign key

33 DDL : Restrições alter table conta add constraint emp_pk primary key(cod); ou alter table conta add primary key(cod); alter table conta add constraint saldo_verif check(saldo is not null and saldo>0); ou alter table conta add check(saldo is not null and saldo>0);


Carregar ppt "Modelo Relacional + SQL Prof. Daniel Callegari Material elaborado pela Prof. Karin Becker."

Apresentações semelhantes


Anúncios Google