Prévia do material em texto
�����������
����
�
Abordagem Relacional
• Abordagem de modelagem de dados usada nos sistemas de gerência
de banco de dados do tipo relacional.
• Modelagem em nível lógico (SGBD) e não conceitual.
• Aqui apresentados:
– conceitos mínimos necessários à compreensão do projeto de
bancos de dados relacionais.
�
Composição de um Banco de Dados Relacional
• relações
– compostas de
• tuplas,
• atributos,
• Chaves primárias,
– relacionadas através de
• Chaves estrangeiras.
�
Tabela - conceitos
�
Emp:
�
Tabela - conceitos
�
Emp:
tabela ou relação
�
Tabela - conceitos
�
Emp:
nome da tabela
�
Tabela - conceitos
�
Emp:
linha ou tupla
�
Tabela - conceitos
�
Emp:
coluna ou atributo
�
Tabela - conceitos
�
Emp:
nome de campo
ou
nome de atributo
��
Tabela - conceitos
��
Emp: valor de campo
ou
valor de atributo
��
Terminologias
��
��
Terminologias
��
aqui
usada
�
Características de relações
• Tuplas de uma relação não estão ordenadas
• (Isto é, linhas de uma tabela não estão ordenadas).
• Valor de atributo:
– atômico,
– monovalorado.
�
��
Acesso a relações
• Acesso por quaisquer critérios envolvendo os atributos de uma ou
mais tuplas.
• Programadores escrevem consultas sem considerar a existência de
caminhos de acesso.
• Caminho de acesso:
• estrutura auxiliar (índice, cadeia de ponteiros,...).
– acelera a recuperação de registros por determinados critérios;
– evita a leitura exaustiva de todos registros de um arquivo.
��
��
Chave
• Conceito usado para especificar restrições de integridade básicas de
um SGBD relacional.
• Três tipos:
– chave primária
– chave alternativa
– chave estrangeira
��
��
Chave primária
��
Chave primária
Uma chave primária é um atributo ou uma
combinação de atributos cujos valores distinguem
uma tupla das demais dentro de uma relação
��
Chave primária
��
chave primária
Dependente:
��
Chave primária - minimalidade
��
não é chave
primária
Chave primária deve ser mínima.
Dependente
��
Chave estrangeira
• Mecanismo que permite a implementação de relacionamentos em um
banco de dados relacional.
��
Chave estrangeira
Um atributo ou uma combinação de atributos,
cujos valores aparecem necessariamente na
chave primária de uma relação
����
Depto:
Emp:
chave
estrangeira
Chave estrangeira
����
Depto:
Emp:
Emp.CodigoDepto é uma
chave estrangeira em relação
a relação Depto.
Chave estrangeira
��
Chave estrangeira
validação pelo SGBD (1)
• Quando da inclusão de uma tupla na relação que contém a chave
estrangeira:
– o valor da chave estrangeira deve aparecer no atributo da chave
primária referenciada.
• Quando da alteração do valor da chave estrangeira:
– o novo valor de uma chave estrangeira deve aparecer no atributo da
chave primária referenciada.
��
�
Chave estrangeira
validação pelo SGBD (2)
• Quando da exclusão de uma tupla da relação que contém a chave
primária referenciada pela chave estrangeira:
– No atributo chave estrangeira não deve aparecer o valor da chave
primária que está sendo excluída
�
��
Chave estrangeira na mesma relação
��
Emp:
��
Chave estrangeira na mesma relação
��
chave estrangeira
referencia a chave
primária da própria
relação
Emp
��
Chave alternativa ou única (SQL)
• Mais de um atributo ou combinações de atributos podem servir para
distinguir uma tupla das demais.
• Um dos atributos (ou combinação de atributos) é escolhido como
chave primária.
• Os demais atributos ou combinações são denominados chaves
alternativas.
– (UNIQUE KEY em SQL)
��
��
Chave alternativa
��
Emp:
chave
alternativa
��
Domínio de atributo
��
Domínio de atributo
Conjunto de valores que podem aparecer em uma
atributo (coluna)
��
Valor vazio
• Um valor de atributo pode assumir o valor especial vazio (“null” em
inglês).
• atributos nos quais:
a) não são admitidos valores vazios são chamadas de atributos
obrigatórios;
b) podem aparecer valores vazios são chamados de atributos opcionais.
• Abordagem relacional:
a) Todos os atributos que compõem a chave primária devem ser
obrigatórios;
b) as demais chaves podem conter atributos opcionais.
��
�
Restrições de integridade
• Objetivo primordial de um SGBD:
– garantir a integridade de dados.
• Para garantir a integridade de um banco de dados:
– SGBDs oferecem mecanismos de especificação de restrições de
integridade.
• Uma restrição de integridade é uma regra de consistência de dados
que é garantida pelo próprio SGBD.
�
�
Restrições de integridade
básicas
• Integridade de domínio
• Integridade de vazio
• Integridade de chave
• Integridade referencial
• Restrições acima:
– garantidas automaticamente por um SGBD relacional através de
especificação declarativa.
– Não é exigido que o programador escreva procedimentos para
garanti-las explicitamente
�
�
Restrições de integridade
semânticas
• Há muitas outras restrições de integridade que não se encaixam nas
categorias básicas.
• Essas restrições são chamadas de restrições semânticas (ou regras
de negócio).
• Exemplos de restrições semânticas:
– Um empregado do departamento denominado “Finanças” não pode
ter a categoria funcional “Engenheiro”.
– Um empregado não pode ter um salário maior que seu superior
imediato.
�
Especificação de banco de dados relacional
• A especificação de um banco de dados relacional (chamada de
esquema do banco de dados) deve conter no mínimo a definição do
seguinte:
1. relações que formam o banco de dados,
2. atributos que as relações possuem,
3. Restrições de integridade.
�
Exemplo de esquema
de modelo relacional resumido
�
Emp (CodigoEmp,Nome,CodigoDepto,CategFuncional,CIC)
CodigoDepto referencia Dept
Dept (CodigoDepto,Nome)
Emp (CodigoEmp,Nome,CodigoDepto,CategFuncional,CIC)
CodigoDepto referencia Dept
Dept (CodigoDepto,Nome)
�
Exemplo de esquema
de modelo relacional resumido
�
Emp (CodigoEmp,Nome,CodigoDepto,CategFuncional,CIC)
CodigoDepto referencia Dept
Dept (CodigoDepto,Nome)
Emp (CodigoEmp,Nome,CodigoDepto,CategFuncional,CIC)
CodigoDepto referencia Dept
Dept (CodigoDepto,Nome)
chave primária
sublinhada
�
Exemplo de esquema
de modelo relacional resumido
�
Emp (CodigoEmp,Nome,CodigoDepto,CategFuncional,CIC)
CodigoDepto referencia Dept
Dept (CodigoDepto,Nome)
Emp (CodigoEmp,Nome,CodigoDepto,CategFuncional,CIC)
CodigoDepto referencia Dept
Dept (CodigoDepto,Nome)
especificação de
chave estrangeira
�
Exemplo de esquema
de modelo relacional
�
Emp (CodigoEmp:int,Nome:varchar(100),CodigoDepto:int,
CategFuncional:varchar(20),CIC:char(15))
CodigoDepto referencia Dept
Dept (CodigoDepto:int,Nome:varchar(30))
Emp (CodigoEmp:int,Nome:varchar(100),CodigoDepto:int,
CategFuncional:varchar(20),CIC:char(15))
CodigoDepto referencia Dept
Dept (CodigoDepto:int,Nome:varchar(30))
especificação de
domínio de atributo
Esquema de relação
– ������������� �������
�����
– R �� ������������� !�" �#���$��#���������%���
– &'�#(��)
– &�$��#�* �
������� ��#�* �
���������* �
������
����* �
����!
– � R!�" �#������%��������$��#���������%���R
– &'�#(��)
– �
����� &�$��#�* �
����!
Instância de relação
– +��,�����������
��
���-�
���������%��!�����#������%�������
��(�
.
�����(����#���������
– /#����#������������" �#����(������(����������(����#����0���#��#��
�������
atributos
(ou colunas)
tuplas
(ou linhas)
Representando instâncias e tuplas
de uma relação
– 1��#��#��������������� ��2������3���3����4�3� �#������%�����" �#�
��� ��2��������
3� '��3� '�� '�3�
5����������#������%���" �#� ��2������������(���� �������������!������
�����
∈ 3
– &'�#(��)��6�
��#�* �
���������78������6#
�0��9���:��;
����:<
���* �
���������7��
���=���0��5��><
����* �
������������7?���
������:���5
���.
���<
&���������7��� 8��������
���?���
���!��
6#
�0��=���0���:�!�
9���:��=���0���:�!�
;
����:��5��>��5
���.
���!�<
" �#������%��������� ��#�* �
������'�����* �
������'��
����* �
����!
Os valores entre {}
representam um conjunto
de tuplas da relação
Relações são desordenadas
• ������#�������(����"
�����,����� �����(����(���#��������#�
�#������#����
��@�
�!
• &'�#(��)�����%��� ����� �#���(�����������������
��
Consulta à base de dados
SQL
• Consultas e alterações são escritas em linguagem declarativa (SQL).
• Exemplo:
��
SELECT Emp.Nome
FROM Emp, Dept
WHERE Dept.Nome LIKE “Computação” AND
Emp.CodigoDepto = Dept.CodigoDepto AND
Emp.CategFuncional=“Programador”
SELECT Emp.Nome
FROM Emp, Dept
WHERE Dept.Nome LIKE “Computação” AND
Emp.CodigoDepto = Dept.CodigoDepto AND
Emp.CategFuncional=“Programador”
Emp (CodigoEmp,Nome,CodigoDepto,CategFuncional,CIC)
CodigoDepto referencia Dept
Dept (CodigoDepto,Nome)
Emp (CodigoEmp,Nome,CodigoDepto,CategFuncional,CIC)
CodigoDepto referencia Dept
Dept (CodigoDepto,Nome)
Banco de Dados
relacional