Roteiro Modelo de Dados Relacional Luiz Henrique de Campos Merschmann Departamento de Computação Universidade Federal de Ouro Preto [email protected] www.decom.ufop.br/luiz Posicionamento Introdução Conceitos do Modelo Relacional Restrições do Modelo Relacional Operações de Atualização e Tratamento de Violações de Restrição BCC321 - Banco de Dados I Ementa 1. Conceitos básicos em sistemas de banco de dados. 2. Conceitos e arquitetura de sistemas de banco de dados. 3. Modelagem conceitual de dados. 4. Modelo Relacional: conceitos básicos e restrições de integridade. 5. Linguagens: álgebra e cálculo relacional. 6. A linguagem SQL e o uso de APIs. 7. Projeto de banco de dados. 8. Normalização de banco de dados. 9. Noções de processamento de transações, concorrência e recuperação de falhas. 10. Aspectos de implementação de banco de dados. Processo de Projeto de Banco de Dados Introdução Introdução SGBDs relacionais populares: I Introduzido por Ted Codd, da IBM Research, em 1970. I O modelo usa o conceito de uma relação matemática como seu bloco de construção básica. I DB2 e Informix Dynamic Server – da IBM. I Oracle e Rdb – da ORACLE. I Tem sua base teórica na teoria dos conjuntos. I Sybase SGBD – da SYBASE. I Primeiras implementações comerciais do modelo relacional: início dos anos 80. I SQLSever e Access – da MICROSOFT. I PostgreSQL e MySQL – código aberto. Conceitos do Modelo Relacional I I O modelo relacional representa o banco de dados como uma coleção de relações. Informalmente: relação = tabela de valores. I I Cada linha da tabela representa um fato que corresponde a uma entidade ou relacionamento do mundo real. Os nomes das colunas especificam como interpretar os valores de dados em cada linha. Conceitos do Modelo Relacional I Cada linha de uma relação (tabela) = tupla. I Cabeçalho de uma coluna = atributo. I Conjunto de valores que podem aparecer em cada coluna = domínio. Conceitos do Modelo Relacional Conceitos do Modelo Relacional Domínio I É um conjunto de valores atômicos. I Um domínio tem uma definição lógica. Exemplos: I I I Numeros_fone_local: conjunto de números de telefone de oito dígitos. Nomes_departamentos: conjunto dos nomes dos departamentos acadêmicos de uma universidade. Um domínio também tem um tipo de dado e formato. Exemplo: I Esquema de Relação I I Usado para descrever uma relação. Indicado por R(A1 , A2 , . . . , An ), onde: I I I I R é o nome da relação. A1 , A2 , . . . , An é a lista de atributos. n é o grau (ou aridade) da relação. Exemplo: ALUNO(Nome, CPF, Fone, Endereço, Idade) Numeros_fone_local: o tipo de dados pode ser uma sequência de caracteres no formato (dd)dddd − dddd, em que cada d é um dígito numérico. Conceitos do Modelo Relacional Características das Relações Ordenação de Tuplas em uma Relação Relação r do esquema de relação R(A1 , A2 , . . . , An ) (ou estado da relação) I I Relação = conjunto de tuplas. I Matematicamente, os elementos de um conjunto não tem ordem entre eles, portanto as tuplas de uma relação não têm qualquer ordem em particular. I Já em um arquivo, os registros são fisicamente armazenados, então, sempre há uma ordem entre os registros. I Analogamente, quando exibimos uma relação em uma tabela, as linhas são exibidas em uma certa ordem. I A ordenação de tupla não é parte da definição de uma relação. Indicado por r(R). I I I I É um conjunto de n-tuplas r = {t1 , t2 , . . . , tm }. Cada n-tupla t é uma lista ordenada de n valores t =< v1 , v2 , . . . , vn >. O i-ésimo valor na tupla t, que corresponde ao atributo Ai é referido como t[Ai ] ou t[i]. r(R) ⊆ (dom(A1 ) × dom(A2 ) × . . . × dom(An )) Características das Relações Restrições do Modelo Relacional Restrições são condições que devem ser atendidas em todos os estados válidos do banco de dados. Ordenação de Valores Dentro de uma Tupla I I Uma tupla é uma lista ordenada de valores. Cada valor em uma tupla é um valor atômico. I I As restrições podem ser divididas em três categorias principais: I Restrições inerentes baseadas em modelo (relacional). I Restrições baseadas em esquema: podem ser expressas nos esquemas do modelo de dados. I Restrições baseadas em aplicação: restrições que não podem ser expressas diretamente nos esquemas do modelo de dados e, por isso, devem ser impostas pelos programas de aplicação. I Atributos compostos e multivalorados não são permitidos. Valores nulos (nulls) são usados para representar os valores de atributos que podem ser desconhecidos ou não se aplicar a uma tupla. Restrições do Modelo Relacional Restrições de Domínio I Restrições baseadas em esquema: I Restrições de domínio. I Restrições de chave. I Restrições de integridade de entidade. I Restriçoes de integridade referencial. Ex.: Uma relação não pode ter tuplas repetidas. I Especificam que dentro de cada tupla o valor do atributo A deve ser um valor atômico do domínio dom(A). Os tipos de dados associados aos domínios incluem: I I I I I I Numéricos: inteiros e reais. Caracteres. Booleanos. Cadeias de caracteres de tamanho fixo e tamanho variável. Data. Hora. Restrições de Chave e em Valores Null Uma relação é um conjunto de tuplas. Portanto, todas as tuplas da relação devem ser distintas. Superchaves do esquema de relação R I São subconjuntos de atributos SK de um esquema de relação R, onde: I I I Duas tuplas, em qualquer estado r de R, não podem ter o mesmo valor para SK. Ou seja, para quaisquer tuplas distintas t1 e t2 em r(R), t1 [SK] 6= t2 [SK]. Toda relação tem, pelo menos, uma superchave default. Chave do esquema de relação R I É uma superchave mínima. I Ou seja, uma superchave da qual não podemos remover quaisquer atributos e ainda manter a restrição de unicidade. Restrições de Chave e em Valores Null I Um esquema de relação pode ter mais de uma chave (cada uma delas é chamada de chave candidata). I Se um esquema de relação tiver mais de uma chave candidata, uma delas é escolhida para ser a chave primária da relação. Exemplo: CARRO{Placa, NumeroChassi, Marca, Modelo, Ano} I I I Chaves candidatas? {Placa} e {NumeroChassi} Escolhemos, por exemplo, {Placa} como chave primária. I Os valores da chave primária são usados para identificar tuplas na relação. I Geralmente é melhor optar por uma chave primária com um atributo único ou com um número pequeno de atributos. I Outra restrição nos atributos: especificar se valores nulos são ou não permitidos. Restrições de Chave e em Valores Null Exemplo: Considere o seguinte esquema de relação CARRO I CARRO{Placa, NumeroChassi, Marca, Modelo, Ano} Superchaves de CARRO: I {Placa, Marca} é uma superchave, mas não é chave. I I I {Placa, Marca} {NumeroChassi} Em geral: I Toda chave é uma superchave (o contrário não é verdadeiro). I Qualquer conjunto de atributos que inclua uma chave é uma superchave. Relação CARRO com Duas Chaves Candidatas Esquema de um Banco de Dados Relacional I Um esquema de banco de dados relacional S é: I Exemplo: I I Um conjunto de esquemas de relação S = {R1 , R2 , . . . , Rm }. Um conjunto de restrições de integridade I. Integridade de Entidade e Integridade Referencial I I EMPRESA={FUNCIONARIO,DEPARTAMENTO,LOCALIZACAO_DEP, PROJETO,TRABALHA_EM,DEPENDENTE} A restrição de integridade de entidade estabelece que nenhum valor de chave primária pode ser nulo. A restrição de integridade referencial: I I I Envolve duas relações. É usada para manter a consistência entre as tuplas nas duas relações. Ex.: Dnr de FUNCIONARIO x Dnumero de DEPARTAMENTO. Um conjunto de atributos F K é uma chave estrangeira do esquema da relação R1 , que faz referência à relação R2 , se satisfizer: 1. Os atributos F K têm o mesmo domínio dos atributos da chave primária P K do esquema R2 . 2. t1 [F K] = t2 [P K], onde t1 é uma tupla de R1 e t2 é uma tupla de R2 OU t1 [F K] é nulo. I Restrição de Integridade Referencial Se as duas condições acima forem asseguradas, então existe uma restrição de integridade referencial de R1 para R2 . Restrição de Integridade Referencial I A restrição de integridade referencial pode ser expessa pela notação R1 [F K] → R2 [P K] I onde F K é a chave estrangeira de R1 e P K é a chave primária de R2 . Exemplos: I I I FUNCIONARIO[Dnr]→DEPARTAMENTO[Dnumero] TRABALHA_EM[Fcpf]→FUNCIONARIO[Cpf] TRABALHA_EM[Pnr]→PROJETO[Projnumero] Outros Tipos de Restrições I As restrições mencionadas até aqui estão incluídas na DDL, pois ocorrem na maioria das aplicações de BD. I No entanto, não estão incluídas restrições mais gerais (restrições de integridade semântica). Exemplos: I I I I O salário de um funcionário não deve ser maior do que o do seu supervisor. Um funcionário pode trabalhar no máximo 56 horas por semana em todos os projetos. I I I Fornece uma lista de valores de atributos para uma nova tupla t, que é inserida em uma relação R. I Exemplo: Inserir<’Alicia’,’F’,’Zelaya’,’999887777’,’05-04-1960’,’Rua Souza Lima, 46, Belém, PA’,F,2800,’987654321’,4> em FUNCIONARIO Pode violar as seguintes restrições: I I I I Restrições de domínio. Restrições de chave. Restrição de integridade de entidade. Restrição de integridade referencial. Se uma inserção violar restrição(ões), a opção default é rejeitar a inserção. As operações do modelo relacional podem ser classificadas em recuperações e atualizações. Há três operações básicas de atualização: I I I I em programas de aplicação que atualizam o BD. usando uma linguagem de especificação de restrição (SQL). Operação Inserir I I Essas restrições podem ser especificadas: I I Operações de Atualização e Tratamento de Violações de Restrição Inserir Excluir Alterar (ou Modificar) Quando essas operações são aplicadas, as restrições de integridade especificadas no esquema do banco de dados relacional não devem ser violadas. Operação Excluir I I Essa restrição pode violar apenas a restrição de integridade referencial. Opções disponíveis caso uma operação de exclusão cause violação: I I I I Rejeitar a exclusão. Exclusão em cascata. Modificar os valores dos atributos de referência (receberiam nulo ou modificados para referir outra tupla válida). Em geral, o SGBD permite ao usuário especificar quais opções se aplicam no caso de uma violação. Operação Modificar Perguntas? I I Usada para mudar valores de um ou mais atributos em uma tupla. Pode violar as seguintes restrições: I I I I Restrições de domínio. Restrições de chave. Restrição de integridade de entidade. Restrição de integridade referencial. I As opções para tratar as violações são as mesmas discutidas para as operações de inserção e exclusão. I Para violações de integridade referencial, o SGBD permite ao usuário escolher quais opções devem ser usadas para tratar uma violação. FIM