Prévia do material em texto
Arquitetura de sistemas de bancos de dados Aula 2: Modelo Relacional Apresentação Os sistemas de gerenciamento de banco de dados, ou SGBDs, são conjuntos de softwares utilizados para o gerenciamento de uma base de dados, ou seja, são os programas utilizados para controlar, organizar, acessar e proteger as informações de uma empresa. Nos maiores SGBDs comerciais, o modelo de dados lógico utilizado é o relacional, que será objeto de estudos desta aula. Além disso, estudaremos a álgebra relacional, que de�ne as operações que podemos realizar dentro do modelo relacional. Objetivos Descrever o modelo relacional; Escrever expressões de álgebra relacional. Modelo relacional O modelo relacional de dados foi proposto por Edgar Codd em 1970, baseando-se em conceitos matemáticos para proporcionar uma representação con�ável para bancos de dados. O modelo relacional se propõe a representar os dados em uma coleção de relações. Dessa forma, as relações são vistas como tabelas de valores, nas quais cada linha representa uma coleção de dados relacionados. Esses valores podem ser interpretados como fatos, descrevendo uma instância de uma entidade ou de um relacionamento do mundo real. Os nomes da tabela e das colunas são utilizados para facilitar a interpretação dos valores armazenados em cada linha da tabela. Edgar Frank Codd (Dorset, 23 de agosto de 1923 — Flórida, 18 de abril de 2003) foi um matemático britânico conhecido por desenvolver o banco de dados relacional. Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online Conceitos do modelo relacional A seguir conheceremos alguns conceitos importantes. Vamos lá. Relação No modelo relacional, uma relação é uma tabela onde são armazenados dados. Por exemplo, podemos ter em nosso banco de dados as relações DEPARTAMENTO e REGIÃO, que armazenam, respectivamente, os dados dos departamentos e das regiões. As relações apresentam as seguintes características: Não possuem duas linhas iguais. Os atributos devem possuir valores atômicos (indivisíveis). Atributo Os atributos de uma relação constituem as colunas da tabela. Por exemplo, na tabela DEPARTAMENTO temos os atributos ID, NOME e ID_REGIAO. É importante ressaltar que todo atributo possui um domínio. O conjunto dos atributos de uma tabela constituem o seu esquema. Domínio O domínio consiste de um conjunto de valores válidos para um determinado atributo. Como, por exemplo, o domínio do atributo NOME na tabela de departamentos é constituído dos nomes válidos de departamento na empresa. Todo atributo possui um domínio, no mínimo constituído pelo seu tipo, numérico, alfanumérico, data etc. Dessa forma, todos os valores em uma coluna são necessariamente do mesmo tipo. O fato de os atributos respeitarem o seu domínio é denominado integridade de domínio. Esquema O esquema de uma relação descreve a sua estrutura, sendo constituído pelo conjunto de seus atributos e suas restrições. Por exemplo: O esquema da tabela DEPARTAMENTO é composto de ID, NOME e ID_REGIAO, ou seja, Departamento (ID, NOME, ID_REGIAO). Tupla As tuplas de uma relação constituem as linhas da tabela. Por exemplo, na tabela DEPARTAMENTO a linha do departamento de vendas constitui uma tupla da relação. O conjunto das tuplas de uma tabela constitui a sua instância. Instância A instância é composta pelo total dos valores de seus atributos, consistindo, na prática, no conjunto dos dados armazenados no BD. Por exemplo, na tabela DEPARTAMENTO a instância é formada pelas suas quatro linhas, ou seja, pelos dados dos departamentos de vendas, operações, administrativo e �nanceiro. Campo O campo de uma relação é de�nido como a área de interseção entre um atributo (coluna) e uma tupla (linha). Por exemplo, na �gura vemos a delimitação do campo NOME na segunda linha da tabela. Todo campo possui um valor. Valor O valor de um campo é o seu conteúdo. Por exemplo, na �gura vemos que o valor do campo NOME na segunda linha é OPERAÇÕES. Quando um campo não possui um valor dizemos que ele é nulo. Nulo Quando a�rmamos que o valor de um campo é nulo, estamos a�rmando que ali não existe nada. Nulo, não zero. Nulo não é um espaço em branco, não é sequer um valor. Nulo é ausência de valor que pode se originar do fato de não sabermos, ou de não existir o valor a ser colocado. Por exemplo, na �gura vemos que o valor do campo CPF da última linha da tabela DEPENDENTES é nulo, ou seja, ali não há valor algum. Agora, por que isso aconteceu? Vamos supor que Carlos Ventura tenha mais de 18 anos, então, por lei deveria ter CPF, mas quando fomos cadastrá-lo no banco de dados não sabíamos o número de seu CPF, então não colocamos nada. Outra situação seria o fato de Carlos Ventura ser uma criança de 5 anos, que obviamente não possui CPF. Cabe ressaltar que somente é possível deixar nulos campos de atributos não obrigatórios. Chave primária Uma chave primária é o atributo da relação utilizado para identi�car unicamente uma tupla. É normalmente denominada PK do termo em inglês primary key. Um atributo, para ser chave primária, deve obrigatoriamente ser único e obrigatório. A chave primária é escolhida entre as chaves candidatas de uma relação e pode ser simples ou composta. Por exemplo, a �gura mostra as colunas ID das tabelas DEPARTAMENTO e REGIÃO constituindo suas chaves primárias. Uma observação importante é que embora os SGBD permitam a criação de tabelas sem chave primária, o modelo relacional prevê que toda relação deve possuir uma PK. Único Quando a�rmamos que uma PK deve ser única, signi�ca que nenhuma tupla de uma mesma relação pode ter o mesmo valor para o atributo escolhido como chave primária. Isso é denominado integridade de chave primária. Se observarmos as tabelas anteriores, veremos que o valor do ID na tabela DEPARTAMENTO não se repete. De fato, se tivéssemos valores repetidos na coluna ID, como poderíamos identi�car a tupla? Na próxima tabela, vemos que existem duas linhas com o mesmo valor de ID: 20. Se desejamos nos referir ao Departamento 20, teríamos uma dúvida: O departamento 20 que desejamos é o de OPERAÇÕES ou o ADMINISTRATIVO? Obrigatório O valor da chave primária não pode ser vazio, ou seja, não pode ser nulo. O valor nulo não permite a identi�cação de uma tupla. Essa restrição é denominada integridade de entidade. De fato, a chave primária serve como representante na base de dados de uma entidade. Se a chave primária for vazia, a linha não corresponde a nenhuma entidade. Observe a tabela. Repare que todas as linhas possuem um valor na coluna ID tanto na tabela DEPARTAMENTO quanto na tabela REGIÃO: Observe a próxima tabela. Como poderíamos identi�car uma região se existissem na tabela várias linhas com ID nulo? Como poderíamos referenciar a primeira linha e a última? Por isso uma PK não pode ser nula. Chaves candidatas É o atributo ou conjunto de atributos de uma relação que permite identi�car a linha de forma única. Uma delas será escolhida como chave primária, a partir da qual o SGBD irá manter automaticamente a restrição de unicidade. Da mesma forma que a chave primária, uma chave candidata pode ser simples ou composta. Na tabela DEPARTAMENTO, a seguir, possuímos duas chaves candidatas simples, a coluna ID e a coluna NOME, pois ambas possuem valores únicos e não nulos, e qualquer um deles pode ser PK da tabela: Chave simples Dizemos que uma chave primária é simples quando é composta por apenas um atributo. Podemos notar que tanto na tabela DEPARTAMENTO como na tabela REGIÃO a PK é composta apenas pela coluna ID, que, por possuir valores únicos e não nulos, permite a identi�cação de forma unívoca da linha. Chave composta Dizemos que uma chave primária é composta quando possui mais de um atributo. No exemplo a seguir, a tabela Dependentes possui uma PK composta pela coluna “Responsável” e pela coluna “Id”. Por que isso foi necessário? Como uma PK deve ser única e não nula, ao analisarmos a tabela em busca de uma chave candidata podemos observar que: Atenção! Aqui existe umavideoaula, acesso pelo conteúdo online 1 A coluna “Responsável” é obrigatória, mas pode possuir valores repetidos. 2 A coluna “Id” é obrigatória, mas pode possuir valores repetidos. 3 A coluna “Id” é obrigatória, mas pode possuir valores repetidos. 4 A coluna “Grau” é obrigatória e pode possuir valores repetidos. 5 A coluna “CPF” apesar de ser única pode possuir linhas nulas. A análise mostra que não temos como fazer uma PK simples, mas se considerarmos o par “Responsável/Id”, não existirá repetição, pois para um mesmo “Responsável” o valor de “ID” não se repete. O que permite que criemos uma PK composta. Chave estrangeira É quando um atributo de uma relação é chave primária (PK) em outra. É normalmente denominada FK do termo em inglês foreign key, constituindo-se na ligação lógica entre as tabelas, implementando �sicamente os relacionamentos da modelagem conceitual. Através das operações com as chaves estrangeiras, garante-se a integridade referencial do banco de dados. Por exemplo, a seguir vemos que a coluna ID_REGIAO na tabela DEPARTAMENTO é uma chave estrangeira para a tabela REGIÃO na coluna ID. Integridade referencial A Integridade referencial determina que as chaves estrangeiras (FK) têm que ser respeitadas, ou seja, se existe um determinado valor para o atributo na tabela onde ele é chave estrangeira, esse valor deve existir na tabela em que ele é chave primária. Atenção Nas tabelas anteriores podemos observar que todos os valores do atributo ID_REGIAO na tabela DEPARTAMENTO existem no atributo ID (PK) da tabela REGIÃO. Se tentássemos inserir na tabela DEPARTAMENTO um valor de ID_REGIAO = 4, o SGBD acusaria um erro de violação de chave estrangeira e não permitiria a inserção da linha. Álgebra relacional A álgebra relacional é uma coleção de operações canônicas que são utilizadas para manipular as relações. Essas operações são utilizadas para selecionar tuplas de relações individuais e para combinar tuplas relacionadas de relações diferentes para especi�car uma consulta em um determinado banco de dados. O resultado de cada operação é uma nova relação, a qual também pode ser manipulada pela álgebra relacional. Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online Saiba mais Antes de encerrar seus estudos, conheça detalhadamente as principais operações da álgebra relacional. javascript:void(0); Atividades 1. Considerando a tabela abaixo, marque todas as opções que atendam à consulta solicitada. Listar o nome e o salário dos empregados que ganham mais de R$2000,00. a) π Nome, Salário (σ salario >= 2000,00 (Empregado)) b) π Nome, Salário (σ salario = 2000,00 (Empregado)) c) π Nome, Salário (σ salario > 2000,00 (Empregado)) d) π RG ,Nome, Salário (σ salario > 2000,00 (Empregado) e) π RG ,Nome, Salário (σ salario < > 2000,00 (Empregado) f) σ salario > 2000,00(π Nome, Salário (Empregado)) Tabela Empregado ID Nome Cargo Salario Id_Depto 101 Carlos Antunes Gerente de Vendas 5000,00 10 102 Pedro Leitão Vendedor 1100,00 10 103 Antômio Ventura Almoxarife 1200,00 20 104 Marco Aurélio Vendedor 1500,00 10 105 Carla da Silva Secretária 1000,00 30 106 Ivo Pereira Contador 2000,00 40 2. Considerando a tabela abaixo, marque todas as opções que atendam à consulta solicitada. Listar o nome do departamento e da região onde ele está localizado. a) π Nome, Nome (DEPARTAMENTO Id_Regiao = Id REGIAO). b) π Empregado.Nome, Departamento.Nome (DEPARTAMENTO Id_Regiao = Id REGIAO). c) π Empregado.Nome, Departamento.Nome (DEPARTAMENTO REGIAO). d) π Empregado.Nome, Departamento.Nome (DEPARTAMENTO X REGIAO). e) π Empregado.Nome, Departamento.Nome (� ID_REGIAO= REGIAO.ID (DEPARTAMENTO x REGIAO)). f) π Empregado.Nome, Departamento.Nome (DEPARTAMENTO ID = ID_REGIAO REGIAO). Tabela Departamento ID Nome Id_Região 10 vendas 1 20 operações 1 30 administrativo 2 40 financeiro 3 Tabela Região ID Nome 1 norte 2 centro 3 sul Notas Referências CODD E F A relational model of data for large shared data banks In: Communications of the ACM Nova Iorque v 13 n CODD, E. F. A relational model of data for large shared data banks. In: ______. Communications of the ACM, Nova Iorque, v. 13, n. 6, p. 377-387, jun. 1970. DATE, C. J. Introdução a sistemas de banco de dados. 7. ed. Rio de Janeiro: Campus, 2000. ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados. 6. ed. São Paulo: Pearson Addison Wesley, 2011. SILBERSCHATZ, A.; KORTH, H. F.; SUDARSHAN, S. Sistemas de banco de dados. 5. ed. Rio de Janeiro: Campus, 2006. Próxima aula Linguagem SQL. Explore mais Pesquise na internet sites, vídeos e artigos relacionados ao conteúdo visto. Em caso de dúvidas, converse com seu professor online por meio dos recursos disponíveis no ambiente de aprendizagem. Leia os textos: Modelagem relacional; O modelo relacional de dados – Parte I; O que é um modelo de banco de dados? javascript:void(0); javascript:void(0); javascript:void(0);