Baixe o app para aproveitar ainda mais
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
Compartilhar