Banco de Dados Parte 3 Profa. Ana Karina Barbosa Abril/2008 Modelo Relacional Definido por E. F. Codd em 1970, teve sua grande aceitação comercial a partir de meados da década de 1980. Razões da grande aceitação: Simplicidade dos conceitos básicos. Poder dos operadores de manipulação. Fundamentação matemática. Modelo Relacional Banco de Dados Relacional Coleção de tabelas (ou relações), cada qual designada por um único nome. Tabelas Conjunto não ordenado de linhas (tuplas), onde cada linha é composta por uma série de campos (valor de atributo). Cada campo é identificado por um nome de campo (nome de atributo). O conjunto de campos das linhas de uma tabela que possuem o mesmo nome formam uma coluna. Modelo Relacional nome do campo Tabela Empregado CódigoEmp E5 E3 E2 E1 Nome Souza Santos Silva Soares linha (tupla) coluna (atributo) CodDepto D1 D2 D1 D1 (nome do atributo) CategFuncional C5 C5 C2 valor do campo (valor do atributo) Modelo Relacional Tabela em um BD relacional X Arquivo As linhas de uma tabela não tem ordenação e não é possível referenciar linhas de uma tabela por posição. Em arquivos convencionais, o programador tem controle sobre a ordem de armazenamento e pode referenciar registros por sua posição dentro do arquivo. Os valores de campo de uma tabela são atômicos e monovalorados. Em arquivos convencionais, campos podem ser compostos por outros campos e campos podem ser multivalorados. Modelo Relacional Tabela em um BD relacional X Arquivo Em arquivos convencionais, para buscar registros com base em valores de seus campos de forma rápida é usualmente necessário algum tipo de caminho de acesso, como um índice ou cadeia de ponteiros. Caminhos de acesso também existem em BDs relacionais, mas não são visíveis pelos programadores. Modelo Relacional Chaves Identifica linhas e estabelece relações entre linhas de tabelas de um banco de dados. Tipos de chaves • Primária • Estrangeira Modelo Relacional Chave Primária Uma coluna ou uma combinação de colunas cujos valores distinguem uma linha das demais dentro de uma tabela. Tabela ALUNO Matrícula Nome Endereço Data_Nascimento 001 Ana Maria R. da Hora 10/04/1985 002 Carlos Paes Av. 17 de agosto 25/06/1991 A chave primária deve ser mínima, isto é, quando todas suas colunas forem efetivamente necessárias para garantir o requisito de unicidade. Modelo Relacional Chave Primária Tabela PRATELEIRA ID_corredor Num_sequencial Capacidade A 1 30 livros B 1 20 livros A 2 50 livros Modelo Relacional Chave Estrangeira É uma coluna, ou combinação de colunas, cujos valores aparecem necessariamente na chave primária de uma tabela. A chave estrangeira é o mecanismo que permite a implementação de relacionamentos em um BD relacional. Modelo Relacional Chave Estrangeira Tabela DEPARTAMENTO Código Nome_depto D1 Compras D2 Engenharia Tabela FUNCIONÁRIO Código Nome CPF Departamento 001 Cézar Marins 657.987.677/23 D2 002 Ana Cavalcanti 234.789.088/90 D1 Modelo Relacional Observação sobre Chave Estrangeira: Impõe restrições que devem ser garantidas em diversas situações de alteração do banco de dados. Restrições: • Quando da inclusão de uma linha na tabela que contém uma chave estrangeira. • Quando da alteração do valor da chave estrangeira. • Quando da exclusão de uma linha da tabela que contém a chave primária referenciada pela chave estrangeira. Modelo Relacional Observação sobre Chave Estrangeira: Uma chave estrangeira pode referenciar a chave primária da própria tabela. Ex: Tabela FUNCIONÁRIO Códig o Nome CPF 001 Teresa Batista 765.987.456/23 10-02-1970 D1 002 002 Carlos Davi 345.657.900/22 05-12-1960 DI - 003 Cézar Marins 657.987.677/23 - D2 - 07-08-1965 D1 002 004 Ana Cavalcanti 234.789.088/90 Data_Nasc FKDep. FKGer. Modelo Relacional Domínios e Valores Vazios Quando uma tabela é definida (Modelagem Lógica de Dados/Abstração de Dados no Nível Lógico), deve ser especificado um conjunto de valores (string(x), number, ...) que os campos da respectiva coluna podem assumir. Além disso, deve ser especificado se os campos da coluna podem estar vazios (null) ou não. Em um SGBD relacional, todas as colunas que compõem a chave primária devem ser obrigatórias. Modelo Relacional Especificando uma tabela Ex: Tabela Funcionário CAMPO TIPO NOT NULL DESCRIÇÂO Codigo Integer Not Null Chave Primária Nome Varchar(20) Not Null Nome do funcionário CPF Varchar(14) Not Null Número do CPF Data_Nasc Date Null Data de Nascimento FKDep Char(2) Not Null Chave Estrangeira Tabela Departamento FKGer Integer Null Chave Estrangeira Tabela Funcionario Modelo Relacional Restrição de Integridade: Um dos objetivos primordiais de um SGBD é a integridade de dados. Dados Íntegros em um BD: Refletem corretamente a realidade representada pelo banco e são consistentes entre si. Para garantir integridade: SGBDs oferecem mecanismos de restrição de integridade. Modelo Relacional Categorias de Restrição de Integridade: Integridade de domínio • Especificam que o valor de um campo deve obedecer a definição de valores admitidos para a coluna (domínio da coluna). • Nos SGBDs relacionais padrão SQL/2 é possível usar apenas domínios pré-definidos como: Integer, Float(x,y), String(x), Text, Date, Boolean,...). • O usuário do SGBD não pode definir domínios próprios como: o domínio dos dias da semana ou o domínio da unidades da federação. Isso fica sob a responsabilidade da aplicação. Modelo Relacional Categorias de Restrições de Integridade: Integridade de vazio • Especifica se os campos de uma coluna podem ou não ser vazios (se a coluna é obrigatório ou não). Campos de chave primária devem ser não vazios. Integridade de chave • Define que os valores da chave primária devem ser únicos. Integridade referencial • É a restrição que define que os valores dos campos que aparecem em uma chave estrangeira devem aparecer na chave primária da tabela referenciada. Modelo Relacional Restrições de integridade não garantidas pelos SGBDs Restrições Semânticas • Um empregado do departamento denominado “Finanças” não pode ter a categoria funcional “Engenheiro”. • Um funcionário não pode ter um salário maior que seu superior imediato. Modelo Relacional Modelagem Relacional: especificação de um Banco de Dados relacional Tabelas que formam o BD Colunas que as tabelas possuem Restrições de Integridade