Baixe o app para aproveitar ainda mais
Prévia do material em texto
Abordagem relacional Banco de dados 1 Fabrício Nogueira fabricio.silva@uva.br Objetivo • Organização de um banco de dados relacional • Estruturas • Relacionamentos • Não detalhar as técnicas de manipulação de dados (linguagem) • SGBDs apresentam o domínio de armazenamento de dados no mercado Composição de um BD relacional • Tabelas (relações) • Conjunto não ordenado de linhas (tuplas) • Cada linha é composta por vários campos (atributos) Empregado Codigo Nome Departamento CategoriaFuncional E5 Souza D1 C5 E3 Santos D2 C5 E2 Silva D1 C2 E1 Soares D1 - Empregado Coluna Tabela vs Arquivos • As linhas da tabela não têm ordenação • A ordem de recuperação dos dados é arbitrária, a não ser que se use uma cláusula de ordenação. Ex.: Obter os empregados ordenados pelo salários • Não é possível referenciar linhas de uma tabela pela sua posição • Os valores de cada campo de uma tabela são atômicos e monovalorados • Linguagens de consultas em bases de dados relacionais permitem o acesso por quaisquer critérios envolvendo os campos de uma ou mais linhas Composição de um BD relacional • Chave • Identificar unicamente as diversas linhas • Estabelecer relações entre linhas de tabelas • Basicamente há três tipos de chaves • Chave primária • Chave alternativa • Chave estrangeira Composição de um BD relacional • Chave primária • Coluna ou conjunto de colunas que distingue uma linha das demais Empregado Codigo Nome Departamento CategoriaFuncional E5 Souza D1 C5 E3 Santos D2 C5 E2 Silva D1 C2 E1 Soares D1 - Composição de um BD relacional • Chave primária • Coluna ou conjunto de colunas que distingue uma linha das demais Dependente CodEmp NoDepen Nome Tipo DataNasc E1 01 Joao Filho 12/01/2001 E1 02 Maria Filha 20/10/2003 E2 01 Ana Esposa 12/12/1970 E5 01 Paula Esposa 14/08/1981 E5 02 José Filho 03/05/1985 Composição de um BD relacional • Chave estrangeira • Coluna ou combinação de colunas, cujos valores aparecem necessariamente na chave primária de uma tabela. • Mecanismo que implementa os relacionamentos no banco de dados Departamento CodigoDepto NomeDepto D1 Compas D2 Engenharia D3 Vendas Empregado CodEmp Nome CodDepto CategFuncional CPF E1 Souza D1 - 132.123.111-11 E2 Santos D2 C5 321.113.764-32 E3 Silva D2 C5 432.123.123-09 E5 Soares D1 C2 653.220.874-22 Todo empregado deve estar associado a um departamento Composição de um BD relacional • Chave estrangeira • A existência de uma chave estrangeira impõe restrições que devem ser garantidas durante as alterações de dados • Inclusão de uma linha em uma tabela que possui chave estrangeira • Alteração do valor de um campo chave estrangeira • Exclusão de uma linha que contém chave primária referenciada pela chave estrangeira • Alteração do valor de uma chave primária referenciada por uma chave estrangeira Composição de um BD relacional • Chave estrangeira • Uma chave estrangeira pode referenciar uma chave primária da mesma tabela (implementação do auto-relacionamento) Empregado CodEmp Nome CodigoDepto CodEmpGerente E1 Souza D1 - E2 Santos D2 E5 E3 Silva D2 E5 E5 Soares D1 E2 Composição de um BD relacional • Chave estrangeira • Uma chave estrangeira pode referenciar uma chave primária da mesma tabela (implementação do auto-relacionamento) Empregado CodEmp Nome CodigoDepto CodEmpGerente E1 Souza D1 - E2 Santos D2 E5 E3 Silva D2 E5 E5 Soares D1 E2 Composição de um BD relacional • Chave alternativa • Em alguns casos, mais de uma coluna ou combinação de colunas podem servir para distinguir uma linha das demais • Uma das colunas (ou combinação de colunas) é escolhida como chave primária • As demais colunas ou combinações são denominadas chaves alternativas Empregado CodEmp Nome CodDepto CategFuncional CPF E1 Souza D1 - 132.123.111-11 E2 Santos D2 C5 321.113.764-32 E3 Silva D2 C5 432.123.123-09 E5 Soares D1 C2 653.220.874-22 Composição de um BD relacional • Chave alternativa • Que critério usar para determinar qual das possíveis colunas será a chave primária? • Por que CodEmp é chave primária e não cpf? • Se considerarmos apenas a tabela em que a coluna aparece, não há diferença entre uma coluna ou outra. • Ao considerarmos chaves estrangeiras, a diferenciação entre chave primária e chave alternativa passa a ser relevante • Quando especificamos uma chave primária, a mesma garante a unicidade de valores e a possibilidade de ser usada nas chaves estrangeiras Composição de um BD relacional • Domínio e valores vazios • Para cada coluna de uma tabela definida no banco de dados, é necessário especificar os tipos de dados que nela serão contidos. Ex.: Texto, número, data, etc Domínio • Adicionalmente, pode ser especificado se os campos podem estar vazios (null) • Colunas nas quais não são admitidos valores vazios, são chamadas de colunas obrigatórias • Por padrão colunas de chave primária são obrigatórias • Colunas nas quais podem aparecer campos vazios, são chamadas colunas opcionais Composição de um BD relacional • Restrições de integridade • Um dos objetivos de um SGBD é a manutenção da integridade de dados sob seu controle • O que significa que eles refletem corretamente a realidade representada pelo banco e que são consistentes entre si • Restrições de integridade são regras de consistência de dados que são garantidas pelo próprio SGBD • Integridade de domínio • Integridade de vazio (null) • Integridade de chave • Integridade referencial Modelo de banco de dados relacional • Deve conter no mínimo a definição dos seguintes itens: • Tabelas • Colunas • Restrições de integridade • Notação textual • Notação diagramática Notação textual • Notação incompleta • Compacta • Útil para discussões sobre a estrutura geral do banco de dados, quando não se deseja entrar no maior nível de detalhe • Lista de tabelas • Para cada tabela, enumerados, entre parênteses as colunas que compõem as tabelas • Colunas que compõem a chave primária são sublinhadas • Após a definição de cada tabela, aparecem as definições das chaves estrangeiras que aparecem na tabela: • <nome de coluna ch. Estrangeira> referencia <nome da tabela> Notação textual • Empregado (CodEmp, Nome, CodigoDepto, CategFuncional, CPF) CodigoDepto referencia Departamento • Departamento (CodigoDepto, Nome) Notação diagramática • Muito utilizada em ferramentas CASE • Tabelas representadas por retângulos • Colunas listadas dentro do retângulo • Indicação do domínio (tipo de dados das tabelas) • Chaves primárias são indicadas pela representação <pk> • Chaves estrangeiras são indicadas pela representação <fk> • Setas representando a associação entre tabelas Notação diagramática Departamento CodigoDepto INTEGER <PK> Nome VARCHAR(40) Empregado CodigoEmpregado INTEGER <PK> CodigoDepto INTEGER <FK> Nome VARCHAR(40) CategFuncional INTEGER CPF VARCHAR(40) Exercícios • Considere o banco de dados relacional definido parcialmente abaixo: • Empregado (CodEmpregado, Nome, CPF) • Dependente (CodEmpregado, NoDependente, Nome) CodEmpregado referencia Empregado • Na tabela Empregado, tanto CodEmpregado quanto CPF podem ser chave primária. Qual deveria ser escolhido? Por quê? Exercícios • Identifique no esquema abaixo, as chaves primárias e estrangeiras • Aluno (CodigoAluno, Nome, CodigoCurso) • Curso (CodigoCurso, Nome) • Disciplina (CodigoDisciplina, Nome, Creditos, CodigoDepartamento) • Curriculo(CodigoCurso, CodigoDisciplina, Obrigatoria_Opcional) • Conceito (CodigoAluno, CodigoDisciplina, Ano_Semestre, Conceito) • Departamento (CodigoDepartamento, Nome) Exercícios • Considere o esquema de banco de dados relacional abaixo: • Paciente (CodigoConvenio, NumeroPaciente, Nome) CodigoConvenio referencia Convenio • Convenio (CodigoConvenio, Nome) • Medico (CRM, Nome, Especializacao) • Consulta (CodigoConvenio, NumeroPaciente, CRM, DataHora) (CodigoConvenio, NumeroPaciente) refrencia Paciente CRM referencia Medico • Quais verificações deve ser feitas no SGBD para garantir a integridade referencial nas situações abaixo: • Inclusão de uma consulta • Exclusão de um paciente • Alterção de um CRM de uma Consulta • Alterção de um CRM de um Médico
Compartilhar