Prévia do material em texto
Fundação de Apoio à Escola Técnica / CETEP – PARACAMBI Disciplina: Modelagem de Dados I Aula: 11/10 CHAVES O conceito básico para estabelecer relações entre linhas de tabelas de um banco de dados relacional é o da chave. Em um banco de dados relacional, há ao menos três tipos de chaves a considerar: a chave primária, a chave alternativa, e a chave estrangeira. Chave Primária Uma chave primária é uma coluna ou uma combinação de colunas cujos valores distinguem uma linha das demais dentro de uma tabela. Na tabela Emp, a chave primária é a coluna CódigoEmp. A tabela (Dependente) que possui uma chave primária composta (colunas CódigoEmp e NoDepen). Neste caso, apenas um dos valores dos campos que compõem a chave não é suficiente para distinguir uma linha das demais, já que tanto um código de empregado (CódigoEmp) pode aparecer em diferentes linhas, quanto um número de dependente (NoDepen) pode aparecer em diferentes linhas. É necessário considerar ambos valores (CódigoEmp e NoDepen) para identificar uma linha na tabela, ou seja para identificar um dependente. Chave Estrangeira Uma chave estrangeira é uma coluna ou uma 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 banco de dados relacional. No banco de dados abaixo, a coluna CodigoDepto da tabela Emp é uma chave estrangeira em relação a chave primária da tabela Dept. Isso significa que, na tabela Emp, não podem aparecer linhas que contenham um valor do campo CodigoDepto que não exista na coluna de mesmo nome da tabela Emp. A interpretação desta restrição é que todo empregado deve estar associado a um departamento. Domínio e Valores Nulos Quando uma tabela do banco de dados é definida, para cada coluna da tabela, deve ser especificado um conjunto de valores (alfanumérico, numérico,…) que os campos da respectiva coluna podem assumir. Este conjunto de valores é chamado de domínio da coluna ou domínio do campo. Além disso, deve ser especificado se os campos da coluna podem estar vazios (“null” em inglês) ou não. Estar vazio indica que o campo não recebeu nenhum valor de seu domínio. Na segunda figura, o campo CategFuncional da linha correspondente ao empregado de código E1 está vazio. Isso indica que o empregado E1 não possui categoria funcional ou que esta ainda não foi informada. Na tabela abaixo, aparece outro exemplo de um campo vazio. No caso, o campo CodigoEmpGerente vazio indica que o empregado não possui superior hierárquico. As colunas nas quais não são admitidos valores vazios são chamadas de colunas obrigatórias. As colunas nas quais podem aparecer campos vazios são chamadas de colunas opcionais. Normalmente, os SGBD relacional exigem que todas as colunas que compõem a chave primária sejam obrigatórias. A mesma exigência não é feita para as demais chaves (ver exemplo de chave estrangeira vazia). RESTRIÇÕES DE INTEGRIDADE Um dos objetivos primordiais de um SGBD é a integridade de dados. Dizer que os dados de um banco de dados estão íntegros significa dizer que eles refletem corretamente a realidade representada pelo banco de dados e que são consistentes entre si. Para tentar garantir a integridade de um banco de dados os SGBD oferecem o mecanismo de restrições de integridade. Uma restrição de integridade é uma regra de consistência de dados que é garantida pelo próprio SGBD. No caso da abordagem relacional, costuma-se classificar as restrições de integridade nas seguintes categorias: Integridade de domínio Restrições deste tipo especificam que o valor de um campo deve obedecer a definição de valores admitidos para a coluna (o domínio da coluna). Nos SGBD relacionais comerciais, é possível usar apenas domínios pré-definidos (número inteiro, número real, alfanumérico de tamanho definido, data, …). O usuário do SGBD não pode definir domínios próprios de sua aplicação (por exemplo, o domínio dos dias da semana ou das unidades da federação). Integridade de vazio Através deste tipo de restrição de integridade é especificado se os campos de uma coluna podem ou não ser vazios (se a coluna é obrigatória ou opcional). Como já foi mencionado, campos que compõem a chave primária sempre devem ser diferentes de vazio. Integridade de chave Trata-se da restrição que define que os valores da chave primária e alternativa 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. As restrições dos tipos acima especificados devem ser garantidas automaticamente por um SGBD relacional, isto é, não deve ser exigido que o programador escreva procedimentos para garanti-las explicitamente. Há muitas outras restrições de integridade que não se encaixam em nenhuma das categorias acima e que normalmente não são garantidas pelo SGBD. Essas restrições são chamadas de restrições semânticas. Alguns exemplos de restrições deste tipo poderiam ser: 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.