Banco de Dados Modelo Relacional Prof. Enzo Seraphim
Tópicos Definição do Modelo Estrutura sintática Terminologia Domínios Esquemas de Relações Ordem Base Relacional Chave Restrições de Integridades
2 construtores sintáticos Valores Os dados do mundo real são representados como valores Tabelas Esses dados são mantidos em tabelas, que representam coleções de objetos, entidades, associações, etc. do mundo real As tabelas são uma maneira intuitiva de se imaginar as relações
Terminologia Base de Dados Conjunto de relações Relação ou Tabela Conjunto de tuplas Tupla ou Registro ou linha Conjunto de atributos Atributo ou campo Armazena valores
Modelo Intuitivo Tupla Relação Valor Atributo
Modelo Intuitivo R1 R2 BASE DE DADOS R3 R4
Domínios Dentro do modelo relacional, considerase sempre que os valores são indivisíveis atômicos Um Domínio é um conjunto de valores atômicos Exemplos Número de salas de aulas Nome dos alunos Código de Disciplinas
Domínios Os domínios em geral são designados como um tipo de dados, que especifica a formação dos valores Exemplos: Números de salas de aula: O conjunto dos número de 1 a 150, Inteiros no formato 999 Nome dos alunos : O conjunto de todos os nomes, possíveis para pessoas: A(60) Código das disciplinas: O conjunto de três letras seguidas de um traço e de três dígitos: AAA -999
Domínios Um Domínio é um conjunto de valores atômicos Um Valor Atômico significa um valor indivisível (no que se refere à Base de Dados como um todo) e monovalorado Um Atributo Indivisível significa que em nenhum lugar da Base de Dados ocorrem partes dele Por exemplo: Data de Nascimento de Aluno será indivisível se em nenhum lugar da base for necessário conhecer-se, por exemplo o dia de aniversário do aluno (dia e mês sem ano)
Domínios Um Atributo Monovalorado é aquele que pode ter apenas uma valor Por exemplo: Idade de aluno é monovalorado Irmãos de aluno é multivalorado
Relações Exemplo: Dado o seguinte esquema de uma Relação Alunos: Aluno = {Nome, RG, Idade} Uma possível instanciação para esse esquema é a Relação: R(Aluno) = {<José, 12345, 21>, <Pedro, 54321, 18>, <Paulo, 321321, 22>}
Relações Numa implementação qualquer SGBD apoiada no modelo Relacional, a ordem existe; pelo fato dos atributos e das tuplas serem armazenados uma seqüência física Assim, a recuperação de informações de um SGBDR pode ser feita em determinada ordem, embora matematicamente, uma relação e seu esquema não possua a idéia de ordem inerente
Chave no Modelo Relacional Superchave Um conjunto de atributos de uma relação R que identifique univocamente cada tupla na relação R é chamada uma SUPERCHAVE Exemplo: Aluno = {Nome, Idade, Curso, No. Matr} Superchave(Aluno) = {Nome, Curso} Superchave(Aluno) = {No. Matr, Nome}
Chave no Modelo Relacional Chave: Chave é uma superchave da qual não se pode retirar nenhum atributo e ainda preservar-se a propriedade de identificação unívoca (chave mínima) Exemplo: Aluno = {Nome, Idade, Curso, No. Matr} Superchave(Aluno) = {Nome, No. Matr} Chave(Aluno) = {Nome} Chave(Aluno) = {No. Matr}
Chave no Modelo Relacional Chave: Adota-se a convenção de que os atributos chaves são grifados. Se mais de um atributo participa de uma mesma chave, grifam-se esses atributos todos com o mesmo número de traços Aluno = {Nome, Idade, Curso, No. Matr} Chave Candidata: É comum que exista mais de uma chave para uma mesma relação. Nesse caso, cada uma das chaves é chamada de Chave Candidata Chave(Aluno) = {Nome} Chave(Aluno) = {No. Matr}
Chave no Modelo Relacional Chave Candidata: Quando existe mais de uma, grifa-se cada chave candidata com um número diferente de traços Aluno = {Nome, Idade, Curso, No. Matr} Chave(Aluno) = {Nome} Chave(Aluno) = {No. Matr} Chave primária Havendo mais de uma chave candidata, escolhe-se uma para ser a chave primária. Essa é a chave que pressupõe-se ser a mais freqüentemente utilizada para acessos nessa relação. A chave primária grifase com apenas um traço A notação para chave primária é C Ch0
Base de Dados Relacional Exemplo: Considere-se uma Base de Dados para armazenar informações sobre as' diversas turmas de disciplinas oferecidas para os alunos num semestre Relações: Aluno = {Nome, No.Matr, Idade, Curso} Matricula = {No.Matr, Sigla, Ano, Semestre, Sala, Nota} Disciplina = {Sigla, Nome, Créditos, No.MatrMonitor} Restrições: Especificação das restrições que se aplicam segundo a conceituação de restrições do Modelo Relacional.
Restrições de Integridade Restrições de integridade são regras a respeito dos valores que podem ser armazenados nas relações que devem ser sempre satisfeitas, em quaisquer das Relações R de uma base de dados BD Existem várias formas de Restrições de integridade que podem ser indicadas. Existem 3 que são consideradas necessárias a uma BD relacional: Restrições de Unicidade da Chave Restrições de Integridade da Entidade Restrições de Integridade Referencial
Restrições de Integridade Restrições de Integridade da Chave: Uma chave candidata qualquer (primária ou não) NÃO pode ter o mesmo valor em duas tuplas distintas da mesma relação Restrições de Integridade da Entidade A chave primária de qualquer relação não pode ser nula em nenhuma tupla dessa relação Restrições de Integridade Referencial O conceito de Integridade Referencial depende do conceito de Chave Estrangeira
Restrições de Integridade Referencial Chave Estrangeira: Dado dois conjuntos de atributos quaisquer C e D, diz- se que ambos são compatíveis quando existe uma ordem entre os atributos de ambos os domínios tal que o primeiro atributo de C tenha o mesmo domínio do primeiro atributo de D, o mesmo valendo para as os segundos atributos, e assim por diante Uma chave estrangeira ocorre quando um conjunto de atributos de C que não é chave em R 1, é compatível com outro conjunto de atributos D que é Chave Primária da relação R 2
Restrições de Integridade Referencial A restrição de Integridade Referencial impõe que se existe um valor no atributos C de uma tupla da relação R 1 deve existir o mesmo valor no atributo D de uma tupla da relação R 2 onde esse atributo é chave.
Restrições de Integridade - Exemplo Chave estrangeira Alunos = {Nome, No.Matr, Idade} = {<Mario, 1234, 20>, <Paulo, 4321, 25>, <Almir, 5432, 22>, <Marta, 2345, 21>} Disciplina = {Sigla, No.MatrMonitor} = {<ECO-104, 1234>, <ECO-123, 2222>, <ECO-149, 1234>, <ECO-189, >}
Restrições de Integridade - Exemplo Alunos = {Nome, No.Matr, Idade} = {<Mario, 1234, 20>, <Paulo, 4321, >, <, 5432, 22>, <Marta, 2345, 21>} Disciplina = {Sigla, No.MatrMonitor} = {<ECO-104, 1234>, <ECO-123, 2222>, <ECO-149, 1234>, <ECO-189, >} Válido: Nenhum atributo é chave primária
Restrições de Integridade - Exemplo Alunos = {Nome, No.Matr, Idade} = {<Mario, 1234, 20>, <Paulo, 4321, >, <Almir,, 22>, <Marta, 2345, 21>} Chave Primária Nula Disciplina = {Sigla, No.MatrMonitor} = {<ECO-104, 1234>, <ECO-123, 2222>, <ECO-149, 1234>, <ECO-189, >} Inválido: Restrição de Integridade de Entidade
Restrições de Integridade - Exemplo Alunos = {Nome, No.Matr, Idade} = {<Mario, 1234, 20>, <Paulo, 4321, 25>, <Almir,1234, 22>, <Marta, 2345, 21>} Duas Chave Primária Iguais Disciplina = {Sigla, No.MatrMonitor} = {<ECO-104, 1234>, <ECO-123, 2222>, <ECO-149, 1234>, <ECO-189, >} Inválido: Restrição de Unicidade da Chave
Restrições de Integridade - Exemplo Alunos = {Nome, No.Matr, Idade} = {<Mario, 1234, 20>, <Paulo, 4321, 25>, <Almir, 5432, 22>, <Marta, 2345, 21>} Disciplina = {Sigla, No.MatrMonitor} = {<ECO-104, 1234>, <ECO-123, 2222>, <ECO-149, 1234>, <ECO-189, >} Chave Estrangeira sem correspondente Inválido: Restrição de Inegridade Referencial
Restrições de Integridade - Exemplo Alunos = {Nome, No.Matr, Idade} = {<Mario, 1234, 20>, <Paulo, 4321, >, <Almir,, 22>, <Marta, 2345, 21>} Disciplina = {Sigla, No.MatrMonitor} = {<ECO-104, 1234>, <ECO-123, 2222>, <ECO-149, 1234>, <ECO-189, >} Tupla com valor nulo na chave estrangeira Válido: No.MatrMonitor é chave estrangeira, mas não é chave primária
Restrições de Integridade - Exemplo Alunos = {Nome, No.Matr, Idade} = {<Mario, 1234, 20>, <Paulo, 4321, >, <Almir,, 22>, <Marta, 2345, 21>} Disciplina = {Sigla, No.MatrMonitor} = {<ECO-104, 1234>, <ECO-123, 2222>, <ECO-149, 1234>, <ECO-189, >} Duas tuplas com o mesmo valor na chave estrangeira Válido: No.MatrMonitor é chave estrangeira, mas não é chave primária
Restrições de Integridade Continuação do Exemplo: Considerando-se uma base de dados para armazenar informações sobre as diversas turmas de disciplinas oferecidas para alunos num semestre Relações: Aluno = {Nome, No.Matr, Idade, Curso} Matricula = {No.Matr, Sigla, Ano, Semestre, Sala, Nota} Disciplina = {Sigla, Nome, Créditos, No.MatrMonitor} Restrições Indicação das Chaves Candidatas Indicação da Chave Primária Indicação das Chaves Estrangeiras
Restrições de Integridade Relações: Aluno = {Nome, No.Matr, Idade, Curso} Matricula = {No.Matr, Sigla, Ano, Semestre, Sala,Nota} Disciplina = {Sigla, Nome, Créditos, No.MatrMonitor}
Restrições de Integridade Restrições Indicação das Chaves Candidatas CC(Aluno) = {(Nome), (No.Matr)} CC(Matrícula) = {(No.Matr, Sigla)} CC(Disciplina) = {(Sigla), (Nome)} Indicação da Chave Primária Ch(Aluno) = {No.Matr} Ch(Matricula) = {No.Matr, Sigla} Ch(Disciplina) = {Sigla} Indicação das Chaves Estrangeiras CE(Aluno) = CE(Disciplina) = { } CE(Matricula) ={<No.Matr, Aluno(No.Matr)>, <Sigla, Disciplina(Sigla)>}
Banco de Dados Modelo Relacional Os logotipos, marcas comerciais e nomes de produtos citados nesta publicação tem apenas o propósitos de identificação e podem ser marcas registradas de suas respectivas companhias.