Baixe o app para aproveitar ainda mais
Prévia do material em texto
Banco de Dados Banco de Dados 1ª edição 2019 Autoria Parecerista Validador Danilo Boechat Seufitelli Johannes Von Lochter *Todos os gráficos, tabelas e esquemas são creditados à autoria, salvo quando indicada a referência. Informamos que é de inteira responsabilidade da autoria a emissão de conceitos. Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio ou forma sem autorização. A violação dos direitos autorais é crime estabelecido pela Lei n.º 9.610/98 e punido pelo artigo 184 do Código Penal. 4 Sumário Sumário Unidade 1 1. Fundamentos de Banco de Dados ............................8 Unidade 2 2. Abstração, Modelo de Dados e Modelagem de Banco de Dados ........................................................................23 Unidade 3 3. Projeto de Banco de Dados – Modelagem Conceitual ......................................................................38 Unidade 4 4. Projeto de Banco de Dados – Modelagem Lógica .54 Unidade 5 5. Normalização de Tabelas .........................................67 Unidade 6 6. Projeto de Banco de Dados – Modelagem Física (SQL – DDL) .............................................................................79 5 Sumário Unidade 7 7. SQL - DML ..................................................................94 Unidade 8 8. SQL - DQL .............................................................. 106 6 Palavras do professor Nesta disciplina, esperamos que você compreenda o quão importante é um banco de dados em nosso cotidiano. Afinal, os dados estão presentes em quaisquer ações praticadas, seja ao fazer o planejamento das contas do mês, seja ao utilizar grandes softwares empresariais. Esta disciplina foca no projeto e implementação de banco de dados. Para isso, a unidade 1 apresentará os conceitos e fundamentos relacionados a bancos de dados, tais como dado, informação, sistema de banco de dados, bem como seus principais usuários. Em seguida, na unidade 2, estudaremos os princípios para concepção de modelos e os aspectos sobre a modelagem de dados para que seja possível representar soluções para problemas do mundo real em bancos de dados. Nas unidades 3, 4 e 5, detalha-se todo o pro- cesso do projeto de um banco de dados. A unidade 6 mostra como utilizar as instruções SQL para implementação dos modelos. Por fim, as unidades 7 e 8 demonstram os comandos da linguagem SQL para realização das operações de inclusão, exclusão, alteração e consulta aos dados armaze- nados em um banco de dados. Para melhor aproveitamento da disciplina, recomendamos que você faça o uso de todo o material disponibilizado e não se prenda exclusivamente ao livro-texto! Ressaltamos também a importância de buscar outros materiais que possam complementar seus estudos em banco de dados. 7 Objetivos da disciplina • Descrever os conceitos fundamentais relacionados a bancos de dados, incluindo dado, informação, campo, registro e tabela. • Discutir os diferentes meios de armazenamento de dados. • Expressar os aspectos da modelagem relacional de dados. • Discutir e aplicar os conceitos de normalização de tabelas em bancos de dados relacionais. • Projetar um banco de dados desde a fase de modelagem até a sua implementação. • Empregar as instruções SQL para a implementação de bancos de dados. • Aplicar as instruções SQL para manipulação de dados. 8 1Unidade 11. Fundamentos de Banco de Dados Para iniciar seus estudos Esta unidade apresenta a evolução histórica do banco de dados, com exemplos e definições, de forma a caracterizar o banco de dados relacio- nal em termos tecnológicos. A distinção entre dados e informação tam- bém será explicitada. Além disso, os diversos usuários de banco de dados serão caracterizados, de modo a ressaltar o papel de cada um deles no ciclo de vida de um banco de dados. Objetivos de Aprendizagem • Recordar a evolução histórica dos meios de armazenamento e dos bancos de dados. • Explicar o que é um banco de dados. • Apontar os conceitos básicos, como entidade/tabela, atributo/ campo, dado e registro. • Diferenciar banco de dados de sistema gerenciador de banco de dados. • Discutir os princípios de um sistema de banco de dados. • Classificar os usuários de banco de dados quanto ao seu papel. 9 Banco de Dados | Unidade 1 - Fundamentos de Banco de Dados Introdução da unidade Hoje em dia, a população se encontra cada vez mais conectada digitalmente. As pessoas se comunicam por tablets e celulares, utilizam os painéis inteligentes dos carros para ter acesso a informações importantes e usam streaming de música e vídeo para entretenimento. A utilização de tablets e celulares aponta para a necessidade de acesso de dados que são armazenados em algum lugar, seja para visualizar uma página da internet, seja para ver as últimas publicações no aplicativo do Facebook. Os painéis inteligentes dos veículos também armazenam os dados antes de exibi-los, podendo esses dados – como nível de combustível e proximidade lateral de outros veículos – ser coletados por sensores. Com a população conectada digitalmente, acessando e gerando dados o tempo todo, é imprescindível que exista uma forma inteligente e segura de armazená-los. Elmasri e Navathe (2010) trazem em seu livro outro exemplo interessante relacionado ao uso de banco de dados, que, para muitos, pode passar despercebido. Os supermercados utilizam sistemas integrados a bancos de dados para registrar o controle de vendas e o estoque de produtos (normalmente em empresas de médio a grande porte). Tais sistemas atualizam automaticamente o banco de dados responsável pelo estoque disponível dos produtos. Exemplos que destacam a importância do uso de banco de dados não faltam. Para isso, esta unidade intro- duz importantes conceitos afins, como banco de dados, sistemas gerenciadores de banco de dados, sistemas de banco de dados e os principais papéis dos usuários em banco de dados. 1.1 Evolução dos bancos de dados O uso dos bancos de dados pode ser mais antigo do que imaginamos. A população primitiva já fazia o uso dos bancos de dados antes mesmo de surgirem os atuais e modernos computadores de uso pessoal. As pinturas rupestres, que, resumidamente, se referem a conjuntos de desenhos e símbolos encontrados em rochas e caver- nas (FIGURA 1), podem ser considerados bancos de dados. Afinal, essas pinturas registram a história da popula- ção primitiva antes mesmo do surgimento da língua e da escrita da forma que conhecemos hoje. Figura 1 – Pintura de parede de arte pré-histórica na caverna neolítica Magura, na Bulgária Fonte: SHUTTERSTOCK, 2018. 10 Banco de Dados | Unidade 1 - Fundamentos de Banco de Dados Porém, não é preciso voltar ao tempo dessa forma. Exemplos mais recentes, como anotações em papel de pão ou em blocos de notas (FIGURA 2), aquela velha agenda em que se anotavam os telefones de amigos e de lojas importantes, bloquinhos de recibos (FIGURA 3) ou quaisquer outros meios não tecnológicos que eram (ou ainda são) utilizados para armazenar dados, são considerados bancos de dados. Figura 2 – Bloco de notas Fonte: SHUTTERSTOCK, 2018. Figura 3 – Bloco de recibos Fonte: SHUTTERSTOCK, 2018. Fichários ou arquivos são outro exemplo clássico de banco de dados. Os fichários nada mais são do que locais físicos (ex.: armários) em que se armazenam fichas. As fichas, normalmente de papel, contêm dados específicos de alguma organização. Esses dados, por exemplo, podem ser de clientes, de vendas, de faturamento, de controle de estoque, entre outros. As Figuras 4 e 5 ilustram o fichário. 11 Banco de Dados | Unidade 1 - Fundamentos de Banco de Dados Figura 4 – Fichário utilizado para armazenar fichas Fonte: SHUTTERSTOCK, 2018. Figura 5 – Arquivo de fichas Fonte: SHUTTERSTOCK, 2018. Você consegue imaginar, nos dias de hoje, alguma empresa multinacional utilizando fichá- rios para armazenar e gerenciar seus dados? Quais seriam os problemas que o uso do fichá- rio poderia gerar? Como pesquisare organizar milhares de registros em pastas e papéis? 12 Banco de Dados | Unidade 1 - Fundamentos de Banco de Dados Dentre os diversos problemas que o uso de fichários causa, podemos citar a demora na recuperação/obtenção de dados; afinal, a busca por um registro é praticamente sequencial. Outro grande problema é o acesso único, pois, devido às limitações físicas, apenas uma pessoa poderá manipular determinada ficha por vez, seja para consulta ou atualização. Suponha que Antônio, gerente de uma loja de roupas, está com a ficha de Beatriz (cliente) para atualizar seus dados. Neste momento, a Beatriz chega à loja. Ao registrar sua compra, Marina, a nova vendedora da loja, iden- tifica que Beatriz não possui uma ficha no arquivo. Com toda sua proatividade, Marina cria uma nova ficha para Beatriz. Após a atualização dos dados, Antônio devolve a ficha de Beatriz para o arquivo. Resultado: agora Beatriz possui duas fichas ativas. Ou seja, a duplicidade e/ou inconsistência dos dados (entre outros problemas) podem ser muito frequentes ao utilizar tais soluções para o armazenamento de dados. Para resolver problemas como esses, surgiram os bancos de dados em ambientes computacionais. A Figura 6 ilustra a linha do tempo de evolução dos bancos de dados computacionais. Ramakrishnan e Gehrke (2008) afir- mam que, desde os primeiros computadores, armazenar e manipular dados têm sido as principais preocupações dos aplicativos. Os primeiros bancos de dados utilizados foram o banco de dados hierárquico e o banco de dados em rede. Porém, tais bancos de dados eram complexos, e os usuários precisavam conhecer a estrutura física de tais bancos para realizar uma consulta. Ainda na década de 1970, surgiram os bancos de dados relacionais com a proposta de simplificar o uso dos ban- cos de dados, pois eles separam a estrutura lógica e física de armazenamento dos dados. Posteriormente, vieram os bancos de dados orientados a objetos e objetos-relacionais, que tinham o objetivo de melhor comunicar com as aplicações orientadas a objetos. Porém, tais bancos de dados não tiveram muita aceitação no mercado. Além disso, alguns gerenciadores de banco de dados relacionais tiveram suas funcionalidades estendidas com alguns recursos de orientação a objetos. Atualmente, existem outros tipos de banco de dados chamados de NoSQL, que vem do inglês Not Only SQL ou “Não Somente SQL”. Resumidamente, tais bancos de dados visam armazenar e recuperar melhor e mais rapida- mente os dados criados e compartilhados na internet. Os principais bancos de dados NoSQL são: orientados a documentos, colunares, chave-valor e orientados a grafos. Cada um tem uma proposta diferente para armazenar e manipular os dados, de acordo com a necessidade das aplicações. Figura 6 – Linha do tempo da evolução dos bancos de dados Herárquico Relacional Rede NoSQLOrientado a Objetos Objeto Relacional 1960 1980 Hoje Fonte: Elaborada pelo autor. Neste livro-texto, o foco será em banco de dados relacionais, pois ainda é o banco de dados mais utilizado como solução de armazenamento de dados de aplicações. A seguir, serão apresentados os conceitos de banco de dados, SGBD e sistema de banco de dados. 13 Banco de Dados | Unidade 1 - Fundamentos de Banco de Dados 1.2 Banco de dados 1.2.1 Definições Banco de dados é uma coleção de dados operacionais usados pelas aplicações de determinada organização (DATE, 2016). Ramakrishnan e Gehrke (2008) descrevem os bancos de dados como uma coleção de dados que, de forma característica, descrevem as atividades de uma ou mais organizações que se relacionam. Para Elmasri e Navathe (2010), banco de dados é uma coleção de dados relacionados que possui as seguintes propriedades implícitas: • Representa aspectos do mundo real (minimundo). • É uma coleção de dados logicamente coerentes com algum significado inerente. • É projetado, construído e instanciado (“povoado”) para uma aplicação específica. Apesar das diversas definições que podemos encontrar, todas elas convergem para algo sim- ples, ou seja, um banco de dados é um conjunto de dados, normalmente organizados por assunto, que se relacionam entre si. Para ilustrar melhor esse conceito, pense no serviço de streaming de vídeos Netflix, que é um ótimo exemplo para contextualizar banco de dados. Nesse serviço, são armazenados: dife- rentes categorias de vídeos, tais como filmes, seriados e documentários; os cadastros dos assinantes e suas respectivas preferências; e visualizações dos vídeos para sugestão posterior de conteúdo relacionado ou para cada usuário lembrar o que estava vendo. 1.2.2 Conceitos básicos Em bancos de dados, dizemos que as entidades são abstrações do mundo real. Por exemplo, podemos abstrair um conjunto de veículos que compartilham características comuns (como possuir rodas, volante, portas, etc.) como sendo uma entidade CARRO. O conceito de entidade está associado à etapa de modelagem de um banco de dados. Fisicamente, os dados associados às entidades são armazenados em tabelas no banco de dados (NERY, 2014). Em termos práticos, podemos dizer que entidades e tabelas são sinônimos. As entidades são caracterizadas por um conjunto de atributos. Por exemplo, uma entidade Cliente pode ser caracterizada pelos seguintes atributos: CPF, nome, e-mail e telefone. De modo análogo, uma tabela possui colu- nas ou campos. Do mesmo modo que uma entidade e uma tabela, na prática, são sinônimos, uma coluna de uma tabela corresponde a um atributo de uma entidade. A Tabela 1 exemplifica uma tabela física de um banco de dados para armazenar os dados dos clientes de uma locadora e suas respectivas locações. Note que as tabelas se relacionam pelo atributo CPF do cliente. 14 Banco de Dados | Unidade 1 - Fundamentos de Banco de Dados Tabela 1 – Banco de dados que armazena informações de clientes e suas locações Cliente CPF Nome E-mail Telefone 123.321.456-78 José j@gmail.com (22) 98899-5544 456.654.123-31 Maria ma@gmail.com (31) 97745-1122 879.955.815-57 Carla ca@gmail.com (11) 94415-7841 126.784.552-14 Daniela dani@gmail.com (15) 94415-7841 Locação Cliente Data Filme Valor 456.654.123-31 05/02/2017 Homem-Aranha R$5,00 123.321.456-78 18/03/2017 Vovozona 3 R$4,50 126.784.552-14 20/02/2018 Esqueceram de mim R$4,00 Fonte: Elaborada pelo autor. Em outras palavras, um banco de dados armazena dados relativos a um contexto específico. Os dados, por sua vez, são fatos que podem ser registrados e que possuem significado implícito ou explícito, como nomes, núme- ros de telefone, endereços, locações (como na TABELA 1), entre outros (ELMASRI; NAVATHE, 2010). Tais dados correspondem aos valores associados aos atributos das entidades – ou colunas/campos das tabelas – e formam os registros. Registro é um conjunto de dados logicamente relacionados que descrevem uma instância de uma entidade/ tabela, como, por exemplo, os dados de cada coluna associados ao cliente José (CPF: 123.321.456-78; nome: José; e-mail: j@gmail.com; telefone: (22) 98899-5544). Também é possível associar um registro como sendo uma linha de uma tabela. É importante ressaltar que dado e informação são conceitos distintos. Apesar de serem similares e importantes para o conhecimento, cada termo possui uma definição apropriada. Um dado sozinho não possui significado relevante e não leva a alguma compreensão. Já a informação corresponde à organização e ordenação dos dados, de modo a dar significado e compreensão a determinado contexto. Um banco de dados pode ser criado e mantido tanto manualmente (como as planilhas eletrônicas e fichários) quanto por um grupo de aplicativos que automatizam o processo de manutenção dos bancos de dados. Para isso, utiliza-se um sistema gerenciador de banco de dados, que será abordado a seguir. 1.3 Sistema gerenciador de banco de dados Sistema gerenciador de banco de dados (SGBD) ou, ainda, database management system (DBMS) é uma coleção de programas que permite aos usuários criar, administrar e manter um banco dedados (ELMASRI; NAVATHE, 2010). 15 Banco de Dados | Unidade 1 - Fundamentos de Banco de Dados A finalidade principal dos SGBDs é fornecer uma maneira eficiente e conveniente de recuperar as informações em bancos de dados (SILBERSCHATZ et al., 2013). Para Elmasri e Navathe (2010), os sistemas gerenciadores de banco de dados facilitam o processo de definição, construção, manipulação e compartilhamento de bancos de dados entre as aplicações e seus usuários. O processo de definição de um banco de dados engloba diversas atividades, sendo uma delas especificar os tipos de dados de cada coluna das tabelas. Existem diversos tipos de dados; entretanto, os mais comuns são os numé- ricos, textuais e temporais. Por exemplo, uma coluna que armazena o preço de um produto é do tipo numérico; uma coluna que armazena o nome de um produto é do tipo textual; e uma coluna que armazena a data de vali- dade de um produto é do tipo temporal. Além disso, o processo de definição contempla a atividade de definir as estruturas dos dados, ou seja, como as tabelas serão criadas e organizadas. Por fim, outra importante atividade é definir as restrições associadas aos dados. Por exemplo, em uma coluna que armazena o sexo de uma pessoa, só serão aceitos os caracteres M ou F, sendo que M representa masculino e F representa feminino. Outro exemplo de restrição associada aos dados pode ser dado pelo estado civil de uma pessoa, cuja coluna só deverá aceitar valores como solteiro, casado, separado e viúvo. Já a construção é o processo de armazenar os dados fisicamente (por exemplo, em um HD) a serem controlados pelo SGBD. É importante dizer que os SGBDs permitem que uma tabela seja armazenada em um ou vários discos rígidos. Essa divisão de dados pode ser útil, por exemplo, quando uma tabela contiver muitos dados (bilhões, por exemplo) e demandar mais de um disco para armazenar os dados. Outra situação para a divisão de dados em diferentes discos rígidos é quando se torna necessário aumentar a performance de um banco de dados. A manipulação inclui funções para realizar consultas com o objetivo de recuperar dados específicos, atualizar o banco de dados para refletir as mudanças no minimundo ou ainda gerar relatórios a partir dos dados armazena- dos. Por fim, o compartilhamento permite o acesso ao banco de dados por vários usuários e programas de forma simultânea. O compartilhamento de dados é vinculado ao papel dos usuários, pois há aqueles que podem incluir e remover registros, outros podem apenas visualizar, e alguns outros podem efetivamente modificar as tabelas e estruturas fisicamente por definição. Os SGBDs também são utilizados com o intuito de proteger os dados, tanto em relação ao acesso indevido por pessoas não autorizadas quanto em relação à confiabilidade dos dados armazenados. Ou seja, um SGBD pode restringir o acesso aos objetos de banco de dados a somente pessoas autorizadas. Um objeto de banco de dados é utilizado para referenciar ou armazenar dados, tais como tabelas, colunas, credenciais de usuários, etc. Ou seja, os SGBDs criam, manipulam e administram os objetos de banco de dados. Atualmente, existe uma gama de SGBDs disponíveis, como o SQL Server, MySQL, Oracle, PostgreSQL, MariaDB, entre outros. Porém, não é obrigatório o uso de soluções prontas para gerenciar os dados. É possível escrever os nossos próprios programas para gerenciar os bancos de dados. Contudo, seria preciso desenvolver sistemas bem complexos para essa manipulação e manutenção dos bancos de dados. Ainda que façamos o uso das soluções prontas – como os SGBDs citados anteriormente –, normalmente seu uso não é de modo isolado. Ou seja, os SGBDs funcionam em conjunto com bancos de dados, bem como outros pro- gramas de aplicação. A esse conjunto, damos o nome de sistema de banco de dados, que será abordado a seguir. 1.4 Sistema de banco de dados O uso de banco de dados em empresas – principalmente as de médio e grande porte – não se limita apenas ao uso de softwares gerenciadores para manipular banco de dados. É comum que tais empresas possuam diversos 16 Banco de Dados | Unidade 1 - Fundamentos de Banco de Dados sistemas diferentes, com seus respectivos bancos de dados, e que, em algum momento, tanto os sistemas quanto os bancos de dados se integrem. O banco de dados (BD) e o sistema gerenciador de banco de dados (SGBD) for- mam o chamado sistema de banco de dados ou sistemas de banco de dados = BD + SGBD. A Figura 7 ilustra um sistema de banco de dados. O SGBD e o BD são apenas alguns dos componentes de um sistema de banco de dados. Para o completo funcionamento, precisa-se de hardware, software, pessoas, procedimentos e dados! Veja mais em Rob e Coronel (2010). Fique atento! Figura 7 – Configuração de um sistema de banco de dados Usuários/programadores Aplicativos/consultas Processador de consultas MySQL, Oracle, MariaDB, PostgreSQL, etc.Acesso aos dados SGBD Local de armazenamento físico dos dados Metadados Banco de dados Fonte: Adaptada de ELMASRI; NAVATHE, 2010. p. 5. Silberschatz et al. (2013) listam diversas aplicações representativas dos sistemas de banco de dados. São elas: • Bancos: para informações de clientes, contas, empréstimos e operações bancárias. • Empresas aéreas: para reservas de horários, poltronas e informações. • Universidades: para registrar dados de alunos, cursos, notas e afins. 17 Banco de Dados | Unidade 1 - Fundamentos de Banco de Dados • Operadoras de cartão de crédito: para registrar compras efetuadas com o cartão e para emitir as fatu- ras mensais de cobranças. • Telecomunicação: para registrar chamadas efetuadas e recebidas, gerar os custos da ligação, manter o saldo atualizado, armazenar informações sobre a rede, etc. • Finanças: para arquivar informações imobiliárias, como compra e venda de ativos financeiros (ações e títulos), armazenar dados de bolsa de valores, negócios online, entre outros. • Vendas: para manter dados de clientes, produtos e compras realizadas. • Revendedores online: para o registro das vendas, anteriormente citado, bem como a manutenção de avaliações de produtos feitas por clientes online. • Indústria: para gerenciar a cadeia de suprimentos, bem como monitorar a produção de itens nas fábri- cas, controlar o estoque de tais itens e fiscalizar o pedido dos itens. • Recursos humanos: para manter informações sobre funcionários, incluindo seus salários, descontos realizados em folha de pagamento, controle de benefícios e geração de contracheques. Ou seja, o uso de sistemas de banco de dados está presente em praticamente todas as áreas das atuais empre- sas, sendo imprescindível a sua utilização. Caso contrário, as empresas poderão perder em competitividade, por exemplo, pelo simples fato de os dados não estarem acessíveis no momento certo. Afinal, um SGBD provê rápido acesso aos dados, além de permitir que diferentes usuários acessem os dados de modo simultâneo, entre outras vantagens. Dentro desses sistemas, cada funcionário da empresa tem um papel diferente e, portanto, deve ter acesso a diferentes partes de um banco de dados. Por exemplo, se no processo de compras de uma empresa não existe necessidade de utilizar informações dos outros funcionários da empresa (recursos humanos), é natural que os compradores da empresa não tenham acesso aos dados dos recursos humanos. Do mesmo modo, se dentro de uma empresa apenas alguns funcionários são responsáveis por criar e consultar tabelas, é natural que outros funcionários de diferentes setores não tenham permissão para criar e manipular esses objetos. Assim, em sistemas de bancos de dados, têm-se responsabilidades distintas para cada usuário envolvido. Tais usuários serão discutidos a seguir. 1.5 Usuários de banco de dados Em sistemas de bancos de dados, é comum a existência de diversas pessoas envolvidas, desde a fase de projeto e implementação até a fase final, com o uso em produção. É importante destacar que os usuários dos bancos de dados sãodiferentes dos usuários gerenciados pelo sistema operacional cujo sistema de banco de dados é executado. Os usuários de banco possuem objetos de banco de dados – como tabelas, visões e resultado de con- sultas – e podem ter privilégios concedidos (graças ao SGBD) nesses objetos. Dessa forma, cada usuário poderá acessar somente os objetos aos quais lhe competem. Veja a seguir os usuários de banco de dados destacados por Silberschatz et al. (2013), Elmasri e Navathe (2010). 1.5.1 Projetista de banco de dados 18 Banco de Dados | Unidade 1 - Fundamentos de Banco de Dados Os projetistas de banco de dados são responsáveis por identificar quais dados deverão ser armazenados em um banco de dados. Os projetistas analisam o minimundo, ou seja, analisam o problema a ser solucionado em nível de banco de dados para que consigam abstrair todos os dados e suas restrições a serem armazenados. Uma das funções do projetista é escolher a melhor estrutura de armazenamento para tais dados. Os projetistas também analisam as necessidades de cada grupo de usuários do banco de dados, de modo a especificar as visões de obje- tos necessárias para que o banco de dados seja capaz de atender as demandas de todos os usuários. Os projetis- tas de banco de dados costumam ser o “braço direito” dos administradores de banco de dados. 1.5.2 Administradores de banco de dados Os sistemas de banco de dados contemplam atividades e softwares complexos, e demandam muita responsabi- lidade ao serem manipulados. Os administradores de banco de dados ou Database Administrator (DBA) são res- ponsáveis por administrar esses recursos. Os DBAs são encarregados de autorizar o acesso dos usuários ao banco e/ou aos objetos de banco de dados específicos. Outra responsabilidade inerente aos DBAs é a monitoração e controle do uso dos bancos de dados. Em suma, os administradores de banco de dados coordenam todas as ativi- dades envolvidas dos sistemas de banco de dados. Para isso, é essencial que os DBAs possuam um domínio sobre os recursos de informação da empresa/organização, bem como suas necessidades. É importante ressaltar que os DBAs, em sua maioria, são profissionais especializados em determinados SGBDs e que, muitas vezes, possuem certificações de mercado para comprovar sua experiência. Silberschatz et al. (2013) diz que uma das principais razões de se usar um SGBD é possuir o controle central do sistema. Tal controle deve ser de responsabilidade do DBA. Dentre as responsabilidades de um DBA, Silberschatz et al. listam as seguintes: • Definir o esquema: o DBA cria a estrutura do banco de dados. • Estruturar o armazenamento e definir o método de acesso. • Modificar o esquema e a organização física: quando houver mudanças nas empresas ou quando hou- ver demanda por melhor desempenho. • Conceder autorização de acesso aos dados: o DBA pode conceder diferentes tipos de autorização a diferentes tipos de usuários. Por exemplo, um aluno não pode ter acesso de atualização ou escrita a uma tabela que contenha as notas de disciplinas. • Manter rotinas: um DBA deve manter diversas rotinas para que um banco de dados funcione correta- mente. Dentre elas, podemos citar a de realizar backups dos dados para situações em que seja preciso recuperar um banco de dados; verificar espaço livre para avaliar a necessidade da aquisição de um novo disco rígido; e monitorar tarefas em execução a fim de manter o bom desempenho. 19 Banco de Dados | Unidade 1 - Fundamentos de Banco de Dados O cotidiano de um DBA pode ser mais intenso que o esperado. Além de questões tecnoló- gicas, os administradores de banco de dados também são responsáveis pela manutenção dos recursos de hardware. Os DBAs devem analisar constantemente a carga de trabalho do sistema de modo a identificar a necessidade de mais recursos físicos. Outra importante fun- ção do DBA é evitar falhas de segurança e manter um bom tempo de resposta do sistema de banco de dados. Você pode aprofundar seu conhecimento sobre as tarefas de um DBA nos principais livros de banco de dados. Saiba mais 1.5.3 Usuário final Usuários finais são aqueles cujas profissões requerem uma interação com o banco de dados. Essa interação pode ser para atualização e consultas, bem como para gerar relatórios, por exemplo. Segundo Elmasri e Navathe (2010), há diversas categorias de usuários finais. São eles: • Usuários casuais: são pessoas que acessam ocasionalmente o banco de dados em busca de diferentes informações a cada acesso. Em geral, utilizam linguagens de consulta a bancos de dados para atender suas demandas. Tais usuários normalmente são gerentes de nível médio a elevado ou profissionais com demandas ocasionais. • Usuários iniciantes: compõem boa parte dos usuários finais. São usuários que realizam atividades “engessadas”, ou seja, atividades de consultas e atualizações nos bancos de dados que são padronizadas e já foram previamente programadas e testadas. Exemplos: • Caixas de banco periodicamente checam os saldos das contas e relatam saques e depósitos. • Funcionários de empresas aéreas, hotéis e locadoras checam a disponibilidade antes de atender as respectivas reservas. • Os correios identificam os pacotes de modo a atualizar o banco de dados de pacotes recebidos e em trânsito. • Usuários sofisticados: são engenheiros, cientistas, analistas de negócios, entre outros que se benefi- ciam das facilidades dos SGBDs para que tenham suas complexas solicitações atendidas. • Usuários autônomos: são usuários que mantêm um banco de dados pessoal utilizando pacotes de pro- gramas prontos. A característica desses softwares é possuir uma interface gráfica de fácil uso. Por exem- plo, usuários que utilizam planilhas eletrônicas. 1.6 Analistas de sistemas e programadores 20 Banco de Dados | Unidade 1 - Fundamentos de Banco de Dados Os analistas de sistemas capturam as demandas dos usuários finais – principalmente os usuários iniciantes – para desenvolver as especificações que atendam tais demandas. Os programadores implementam as especificações geradas pelos analistas. Além disso, os programadores devem testar, documentar e manter a codificação das demandas dos usuários finais. 1.6.1 Administrador de dados Os usuários administradores de dados são responsáveis por todo o sistema de informação, e não apenas dos subsistemas automáticos de processamento de dados. Seu principal objetivo é a estratégia de negócios e seus reflexos nos requisitos de informação, e não a tecnologia em si; ao contrário do DBA, por exemplo, que se preo- cupa com as manutenções preventivas, bem como com o monitoramento e garantia de aplicação das melhores práticas estabelecidas pelos fabricantes de SGBDs. Em outras palavras, um administrador de dados tem como objetivo manter atualizados os modelos de dados de uma organização, bem como manter os modelos, as estruturas lógicas e físicas dos dados em acordo com as regras de negócio definidas (e atualizadas) pela organização, independentemente da tecnologia e do SGBD a serem utilizados. 1.6.2 Analistas de dados São usuários que possuem capacidades em diversas áreas de conhecimento, como consulta a dados, limpeza dos dados, extração de informações, entre outras. Tais conhecimentos auxiliam o analista de dados (AD) a extrair valor dos dados armazenados e gerar insights para um negócio. O analista de dados combina habilidades técnicas e de negócio. A Figura 8 resume o funcionamento do sistema de banco de dados, destacando alguns dos usuá- rios e suas interações. 21 Banco de Dados | Unidade 1 - Fundamentos de Banco de Dados Figura 8 – Ambiente do sistema de banco de dados Fonte: Adaptada de ROB; CORONEL, 2010. p. 21. Síntese da unidade Nesta unidade, vimos que os bancos de dados são coleções de dados relacionados por assunto – por exemplo, redes sociais. Para facilitar a criação e manutenção desses bancos de dados, foram desenvolvidos os sistemas gerenciadores de banco de dados, que nada mais são que um conjunto de programas que lidamcom todos os processos envolvidos para criar e manter bancos de dados. Os SGBDs também são responsáveis por gerenciar a segurança do acesso aos dados e pela confiabilidade dos dados armazenados. O conjunto banco de dados mais sistemas gerenciadores de banco de dados constitui o chamado sistema de banco de dados, que se faz presente na maioria das organizações, principalmente as de médio e grande porte. Por fim, vimos que existem diversos tipos de usuários que lidam direta ou indiretamente com o banco de dados. É importante ter essa separação de forma clara, pois o administrador de banco de dados deverá conceder diferen- tes tipos de acesso ao banco de dados, de acordo com o papel e as necessidades de cada usuário. 22 Considerações finais Os bancos de dados estão presentes na sociedade há muito tempo, desde as pinturas rupestres que registraram parte da história dos povos primi- tivos. As pessoas buscam por maneiras de armazenar dados relevantes para si. Nos dias de hoje, com a rede de computadores e os vários dispo- sitivos que nos permitem estar conectados à internet 24 horas por dia, os bancos de dados se tornaram cruciais para o bom funcionamento da vida moderna. Afinal, você já se imaginou ter que preencher um cadastro gigantesco todas as vezes em que for acessar alguma rede social? Com o uso dos bancos de dados, podemos efetuar nosso cadastro apenas uma vez e, então, acessar nossas contas e informações a partir de credenciais armazenadas. 23 2Unidade 22. Abstração, Modelo de Dados e Modelagem de Banco de Dados Para iniciar seus estudos Nesta unidade, você será apresentado ao conceito de abstração no contexto de banco de dados. A abstração é fundamental para modelar problemas do mundo real e resolvê-los a nível de banco de dados. Para isso, também será mostrado como diferenciar modelo de dados e mode- lagem de dados. Além disso, serão apresentadas as etapas de um pro- jeto de banco de dados, que envolvem as fases de modelagem, projeto e implementação. Objetivos de Aprendizagem • Aplicar os conceitos de abstração para caracterizar problemas do mundo real em soluções de banco de dados. • Esclarecer os conceitos de modelo de dados. • Utilizar a modelagem de dados e entender a sua importância. • Identificar as etapas da arquitetura de três níveis: modelagem, projeto e implementação de banco de dados. 24 Banco de Dados | Unidade 2 - Abstração, Modelo de Dados e Modelagem de Banco de Dados Introdução da unidade Nos dias atuais, o uso dos bancos de dados em vários contextos é totalmente indispensável. Isso ocorre porque os bancos de dados visam facilitar a manutenção de dados essenciais às organizações ou, também, ao uso pessoal. Em contrapartida, um banco de dados mal projetado pode trazer certos prejuízos em relação ao seu uso. Tais pre- juízos podem ocorrer devido à alta complexidade que alguns projetos de banco de dados podem conter em suas estruturas. O projeto de banco de dados refere-se às atividades que abordam o desenvolvimento da estrutura que será utilizada para armazenar e manter os dados. Para projetar um banco de dados capaz de atender as necessidades dos usuários finais, é preciso entender a téc- nica de abstração, os modelos de dados e como se modelar os dados. Nesta unidade, você terá a oportunidade de discutir essas questões, assim como aplicá-las em problemas didáticos. 2.1 Abstração As abstrações auxiliam a entender, classificar e modelar uma realidade, ou seja, algo do mundo real que seja importante para os envolvidos. No caso dos bancos de dados, os envolvidos podem ser quaisquer usuários, ou seja, usuários finais, projetistas, analistas ou administradores de banco de dados. Segundo Machado (2014), a abstração ou a capacidade de abstração é um processo mental utilizado para sele- cionar determinadas características e propriedades de um conjunto de objetos ou fatos, e também para descar- tar outras características consideradas não relevantes em certo contexto. Ou seja, a abstração é aplicada sempre em contextos específicos, quando determinados conjuntos de propriedades são relevantes. Já as características não importantes são descartadas após uma análise contextualizada. Para exemplificar o processo de abstração, considere as seguintes figuras de carros, como ilustrado na Figura 9. Ao visualizar esta figura do ponto de vista de um site de venda de automóveis, interessariam as características de cor, número de portas, tamanho, tipo das rodas, etc.; já do ponto de vista de uma loja de aluguel de carros, é provável que muitas dessas características fossem ignoradas, sendo mais importantes informações como ano de fabricação do carro, potência, autonomia e afins. Figura 9 – Ilustrações de diferentes carros Fonte: SHUTTERSTOCK, 2018. 25 Banco de Dados | Unidade 2 - Abstração, Modelo de Dados e Modelagem de Banco de Dados Quando se fala em abstração no contexto de banco de dados, tem-se que a fonte dessas abstrações é deno- minada minimundo. Os minimundos representam uma descrição formal de uma realidade a ser represen- tada. Também é possível entender minimundo como uma porção da realidade captada pelo analista e que a organização tem interesse em observar, controlar e administrar. Devido à complexidade de alguns mini- mundos, o analista pode optar em subdividi-los em partes menores. As partes menores de um minimundo são chamadas de visão do processo de negócio (MACHADO, 2014). Para Elmasri e Navathe (2010), um minimundo – que também pode ser chamado de universo de discurso (UoD) – representa alguns aspectos do mundo real. Qualquer eventual mudança no minimundo reflete diretamente no banco de dados, ou seja, é possível dizer que o minimundo funciona como as regras de negócio de uma organização. Uma característica essencial dos bancos de dados é permitir a abstração dos dados, de modo a ocultar os detalhes do armazenamento. Em outras palavras, os usuários utilizam os dados de um banco de dados sem necessariamente conhecer como esses dados são armazenados, em quais tabelas ou tipos de campo. Isso ocorre porque, em geral, essas informações são desnecessárias para a maioria dos usuários de banco de dados. O modelo de dados é a ferramenta que permite criar essa abstração, descrevendo a estrutura dos bancos de dados. 2.2 Modelo de dados Um modelo de dados pode ser definido como um conjunto de conceitos e técnicas que podem ser utilizados para descrever a estrutura e as operações em um banco de dados (ELMASRI; NAVATHE, 2010). A busca pelo melhor gerenciamento de dados resultou em distintos modelos; em geral, os modelos de dados buscam suprir as falhas encontradas em sistemas de arquivos (ROB; CORONEL, 2010). Neste capítulo, será apresentada uma visão geral dos principais modelos de dados em uma ordem cronológica, de acordo com Rob e Coronel (2010). São eles: modelo hierárquico, modelo de rede, modelo relacional, modelo entidade-relacionamento e modelo orientado a objetos. 2.2.1 Modelo hierárquico Desenvolvido na década de 1960, o modelo hierárquico gerenciava uma enorme quantidade de dados prove- nientes de complexos projetos de fabricação, como o projeto do foguete Apollo, que aterrissou na Lua em 1969. O modelo hierárquico é determinado por uma estrutura de árvore, no sentido da raiz até as folhas. Essa estrutura possui os chamados níveis ou segmentos, que equivalem ao tipo de registro em um sistema de arquivos. O nível superior (raiz) é chamado de pai do nível imediatamente abaixo dele, que também pode ser chamado de nível filho. Da mesma forma, um filho pode ser pai do próximo nível imediatamente abaixo dele, e assim por diante. O modelo hierárquico representa um conjunto de relacionamentos um para muitos (1:N) entre um pai e seus filhos. É importante destacar que cada pai pode ter muitos filhos; porém, cada filho só pode possuir um pai. A Figura 10 ilustra um exemplo de uma estrutura hierárquica de cargos em uma empresa. 26 Banco de Dados | Unidade 2 - Abstração, Modelo de Dados e Modelagemde Banco de Dados Figura 10 – Estrutura hierárquica PresidenteRaiz (pai) Nível 1 (filhos da raiz) Nível 2 (filhos do nível 1) Nível 3 (filhos do nível 2) Gerente de vendas Vendedores Caixa Auxiliar de produção Auxiliar de compras Gerente de marketing Gerente de operações Gerente administrativo Diretor administrativo Diretor comercial Fonte: Elaborada pelo autor. O modelo hierárquico apresenta diversas vantagens em relação aos sistemas de arquivos e serviu de base para os modelos de dados atuais. Porém, o modelo hierárquico era de difícil implementação e gerenciamento, além de não possuir independência estrutural. Outro fator crítico é que os relacionamentos de dados comuns não se adéquam ao formato 1:N. Tais limitações levaram os profissionais de banco de dados a se reunirem e desenvol- verem outros modelos, como o modelo de rede. 2.3 Modelo de rede O modelo de rede teve como principal característica a representação de relacionamentos de dados complexos de forma mais eficiente que o modelo hierárquico. Outro importante propósito era melhorar o desempenho dos bancos de dados, bem como impor um padrão a eles. A falta de um padrão foi um grande problema aos projetis- tas de banco de dados, pois dificultava a portabilidade de projetos e aplicações. Nesse modelo de rede, o usuário percebe o banco de dados como uma coletânea de registros que possuem o relacionamento um para muitos (1:N). No entanto, o modelo de rede difere do modelo hierárquico, pois permite que um registro tenha mais de um pai. A Figura 11 mostra um exemplo do modelo de dados em rede. Figura 11 – Modelo de dados em rede Conjunto Comissão Conjunto Estoque Conjunto Linha Conjunto Vendas Conjunto Pagamento 1:N 1:N 1:N 1:N 1:N REPCOMERCIAL CLIENTE PRODUTO FATURA PAGAMENTO FAT_LINHA Fonte: ROB; CORONEL, 2010. p. 39. 27 Banco de Dados | Unidade 2 - Abstração, Modelo de Dados e Modelagem de Banco de Dados Neste exemplo, CLIENTE, REPCOMERCIAL, FATURA, FAT_LINHA, PRODUTO e PAGAMENTO representam os tipos de registro. Note que o registro FATURA, por exemplo, é filho de REPCOMERCIAL e CLIENTE, relacionamento este que o modelo hierárquico não permitiria. Apesar de possuir um relacionamento que torna as consultas mais eficientes – por não depender de um único nó raiz para iniciar a pesquisa –, o modelo em rede ainda apresenta alguns problemas. A falta de um recurso para a elaboração de consultas resultava na criação de códigos para a produção de relatórios simples. Além disso, alte- rações estruturais poderiam prejudicar os aplicativos que utilizavam o banco de dados. Por conta dos diversos problemas, na década de 1980, os modelos de dados hierárquicos e em rede foram amplamente substituídos pelo modelo relacional. 2.3.1 Modelo relacional O modelo relacional surgiu em 1970, apresentado por Edgar F. Codd; porém, começou a ser utilizado apenas em 1980, com o surgimento dos bancos de dados relacionais. O modelo relacional é baseado na concepção de que as informações em um banco de dados podem ser consideradas como relações matemáticas. Com isso, elas podem ser representadas por meio de tabelas, nas quais as linhas são as ocorrências de uma entidade, e as colunas, seus atributos. O relacionamento entre as tabelas se dá por meio do compartilhamento de determinado atributo que seja comum entre as tabelas, criando uma referência entre elas. Por exemplo, na tabela abaixo, as tabelas CORRETOR e CLIENTE compartilham o atributo AGENT_CODE. Tabela 2 – Ligação de tabelas relacionais Ligação por meio de AGENT_CODE Nome da tabela: CORRETOR (seis primeiros atributos) AGENT_CODE AGENT_LNAME AGENT_FNAME AGENT_INITIAL AGENT_AREACODE AGENT_PHONE 501 Alby Alex B 713 228-1249 502 Hahn Leah F 615 882-1244 503 John John T 615 123-5589 Nome da tabela: CLIENTE CUS_CODE CUS_LNAME CUS_FNAME CUS_INITIAL CUS_ AREACODE CUS_PHONE CUS_INSURE_ TYPE AGENT_ CODE 10010 Ramas Alfred A 615 844-2573 T1 502 10011 Dunne Leona K 713 894-1238 T1 501 10012 Smith Kathy W 615 894-2285 S2 502 10013 Olowski Paul F 615 894-2180 S1 502 10014 Orlando Myron 615 222-1672 T1 501 Fonte: Adaptada de ROB; CORONEL, 2010. p. 41. 28 Banco de Dados | Unidade 2 - Abstração, Modelo de Dados e Modelagem de Banco de Dados O modelo relacional permite a manipulação em conjuntos de dados ao invés de um único registro. As operações de manipulação possíveis incluem relacionar diferentes informações através de seleções e filtros feitos em uma linguagem de alto nível, como SQL, que foi padronizada pela American National Standard Institute (ANSI). Dentre as principais vantagens do modelo relacional, destacam-se: • Independência dos dados. • Múltipla visão dos dados, ou seja, os dados podem ser acessados/visualizados de formas diferentes pelos usuários. • Menor tempo de desenvolvimento. • Maior segurança no acesso aos dados. • Maior velocidade em consulta/atualização de dados. • Implementação de restrições de integridade de dados. 2.4 Modelo entidade-relacionamento São notáveis os avanços do modelo relacional em relação aos modelos hierárquicos e de rede; porém, as comple- xas atividades de projeto demandam simplicidade conceitual. O modelo relacional necessitava de recursos para se transformar em uma eficiente ferramenta de projeto. Em 1976, Peter Chen apresenta o modelo entidade-relacionamento (ER) ou MER, que se tornou um padrão para a modelagem de dados. O modelo ER provê recursos diagramáticos para representar visualmente as entidades e os relacionamentos de um banco de dados. As representações gráficas do modelo ER utilizadas para modelar os componentes de banco de dados são chamadas de diagramas entidade-relacionamento (DER). Resumidamente, o modelo entidade-relacionamento é baseado nos seguintes componentes: • Entidade – qualquer coisa do mundo real sobre o qual se deseja coletar e armazenar dados. É represen- tada por um retângulo, com seu nome escrito no centro do retângulo. Exemplos de entidade: funcionário e pintor. • Relacionamento – descreve as associações entre os dados. Normalmente, as associações ocorrem entre duas tabelas. Os relacionamentos são expressos geralmente por um verbo na voz ativa ou passiva. Por exemplo, um pintor pinta várias pinturas. A Figura 12 mostra duas notações possíveis para diferentes tipos de relacionamento, utilizando as notações do modelo entidade-relacionamento. O lado esquerdo mostra a notação original apresentada por Peter Chen, e o lado direito, a notação pé de galinha (crow’s foot), que é mais atual. Note que a relação um para muitos (1:N) indica que um pintor (1) pinta várias pinturas (N), e não o contrário. 29 Banco de Dados | Unidade 2 - Abstração, Modelo de Dados e Modelagem de Banco de Dados Figura 12 – Notações de Peter Chen e pés de galinha (crow’s foot). Notação de Chen PINTOR FUNCIONÁRIO HABILIDADE 1 N pinta aprende PINTURA Relacionamento um para muitos (1:N): Um PINTOR pode pintar várias PINTURAS. Cada PINTURA é criada por apenas um PINTOR Relacionamento um para muitos (N:M): Um FUNCIONÁRIO pode aprender várias HABILIDADES. Cada HABILIDADE pode ser aprendida por vários FUNCIONÁRIOS. Relacionamento um para UM (1:1) Um FUNCIONÁRIO gerencia uma LOJA. Cada LOJA é gerenciada por um FUNCIONÁRIO. Notação Pé de Galinha N M FUNCIONÁRIO LOJAgerência 1 1 pinta PINTOR PINTURA aprende gerência FUNCIONÁRIO FUNCIONÁRIO HABILIDADE LOJA Fonte: ROB; CORONEL, 2010. p. 44. Para saber mais sobre o modelo entidade-relacionamento e suas notações, consulte os livros: • ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de banco de dados. 6. ed. São Paulo: Pearson, 2010. • MACHADO, Felipe Nery Rodrigues. Banco de dados: projeto e implementação. São Paulo: Erica, 2014. ISBN Digital: 9788536518961. Você também pode realizar pesquisas na internet sobre o modelo ER. Saiba mais 2.5 Modelo orientado a objetos Problemas ainda mais complexos levaram à criação de modelos de dados que pudessem representar o mundo real de modo mais preciso.O modelo de dados orientado a objetos (MDOO) apresenta os dados e seus relacio- namentos de modo encapsulado, em uma estrutura única, chamada de objeto. No MDOO, o objeto inclui infor- mações sobre os relacionamentos internos, ou seja, entre seus próprios atributos, bem como os relacionamentos externos, provenientes de outros objetos. 30 Banco de Dados | Unidade 2 - Abstração, Modelo de Dados e Modelagem de Banco de Dados O modelo de dados orientado a objetos é baseado nos seguintes componentes: • Objetos – abstrações de uma entidade do mundo real. Podem ser considerados como entidades do modelo entidade-relacionamento. • Atributos – são as propriedades dos objetos. São como as colunas das tabelas do modelo ER. • Classe – representa grupo de objetos que compartilham determinada estrutura. A classe também con- tém os métodos, que são ações que os objetos daquela classe podem realizar. Por exemplo, um objeto da classe PESSOA pode possuir o método CANTAR. • Hierarquia de classes – representa a organização semelhante ao modelo hierárquico, no qual uma classe possui apenas um pai. Por exemplo, as classes CLIENTE e EMPREGADO são filhas da classe PESSOA. • Herança – determina o compartilhamento de atributos e métodos no interior da hierarquia de classes. No caso do exemplo anterior, as classes CLIENTE e EMPREGADO herdarão todos os atributos e métodos da classe PESSOA. O modelo orientado a objetos tem seus dados e relacionamentos representados, em sua maioria, por diagramas de classe da linguagem de modelagem unificada (unified modeling language – UML). Para ilustrar esse modelo, considere a situação de um simples faturamento, em que as faturas são geradas por clientes. Cada fatura é expressa por uma ou mais linhas, e cada linha representa um item adquirido pelo cliente. Para aprofundar os seus conhecimentos, existe ainda o seguinte modelo de dados: NoSQL ou Not Only SQL. Fique atento! 2.6 Modelagem de dados O projeto de um banco de dados tem como objetivo definir a estrutura do banco de dados que será utilizado para armazenar e gerenciar os dados dos usuários finais (RAMAKRISHNAN; GEHRKE, 2008). A modelagem de dados é um processo iterativo e incremental, que utiliza os modelos de dados para descrever as estruturas de armazena- mento dos dados. O processo inicia-se com a concepção do domínio do problema, normalmente descrito pelos minimundos (ROB; CORONEL, 2010). É importante destacar que, à medida que a compreensão do domínio do problema se desenvolve, o nível de detalhes do processo de modelagem também se expande. Se o processo de modelagem for feito com qualidade, o produto resultante será o esquema de dados, que se assemelha a uma “planta” que contém todas as instruções para a construção de um banco de dados de modo a atender as demandas dos usuários finais. 31 Banco de Dados | Unidade 2 - Abstração, Modelo de Dados e Modelagem de Banco de Dados Um esquema de dados considerado pronto para implementação deve conter os seguintes artefatos: • Descrição da estrutura dos dados. • Regras para garantir a integridade dos dados. • Procedimentos para manipulação dos dados que suportem a transformação de dados. Fique atento! O processo de modelagem de dados normalmente ocorre em diferentes níveis de abstração. No nível mais alto, há o modelo conceitual, que é utilizado para validar os requisitos de banco junto aos usuários finais. No nível intermediário, existe o modelo lógico, que descreve a estrutura lógica e a organização dos dados. Por fim, no nível mais baixo, tem o modelo físico, que descreve como os dados serão armazenados fisicamente, tornando-o dependente de um sistema gerenciador de banco de dados. Os usuários que utilizam os esquemas lógicos e físi- cos são o administrador de banco de dados, analista de sistemas e os administradores de dados. A seguir, serão apresentados os três níveis de categoria de modelo de dados. 2.7 Categorias de modelo de dados Nesta unidade, serão definidas as categorias de modelo de dados utilizadas para se projetar banco de dados. Em seguida, será discutida a independência dos dados. 2.7.1 Modelo conceitual O modelo conceitual pode ser definido como uma descrição de um banco de dados de forma independente da implementação de um sistema gerenciador de banco de dados. O modelo conceitual preocupa-se com os dados que podem aparecer em um banco de dados, mas não define como os dados serão armazenados (HEUSER, 2009). Segundo Elmasri e Navathe (2010), o modelo conceitual oculta os detalhes de implementação física e explora a descrição das entidades e seus relacionamentos. A técnica mais utilizada para a realização da modelagem conceitual é o uso do modelo entidade-relacionamento (ER). Como resultado da modelagem conceitual utilizando o modelo ER, temos o esquema conceitual. Normal- mente, esse esquema é representado pelo diagrama entidade-relacionamento (DER), como mostrado na Figura 13. As entidades são representadas pelos retângulos, e as propriedades das entidades são representadas pelas 32 Banco de Dados | Unidade 2 - Abstração, Modelo de Dados e Modelagem de Banco de Dados linhas que saem dos retângulos. Os atributos identificadores de uma entidade são representados por círculos pretos, e os não identificadores são representados por círculos brancos. Figura 13 – Exemplo de esquema conceitual preço Produto descrição n 1 código Tipo de produto descrição código Fonte: HEUSER, 2009. p. 17. O esquema apresentado na Figura 13 descreve um banco de dados para armazenar os dados sobre produtos, tais como o código, a descrição e o preço, bem como o tipo de produto ao qual está associado, por meio de um código e de uma descrição. Esse esquema pode ser utilizado para validar, junto ao usuário final, os requisitos de banco de dados, ou seja, o esquema conceitual apresenta uma visão global dos requisitos do usuário. Uma das principais vantagens do modelo conceitual é justamente a produção de uma visão macro do sistema de fácil compreensão. Além disso, o modelo conceitual é independente de hardware e software, ou seja, qualquer alteração de hardware ou software não causa impactos no projeto de banco de dados a nível conceitual. Para Rob e Coronel (2010), é comum encontrar o termo projeto lógico para a tarefa de se criar um esquema conceitual que possa ser utilizado em qualquer SGBD. 2.8 Modelo lógico O próximo nível do projeto de um banco de dados é o modelo lógico. Este modelo, ao contrário do modelo conceitual, depende do tipo de implementação física de um banco de dados. Por exemplo: um SGBD relacio- nal armazena dados relacionais; um SGBD orientado a objetos armazena dados orientados a objetos; um SGBD hierárquico armazena dados do modelo hierárquico de dados; e assim por diante. Portanto, nessa etapa, não é preciso saber qual será o sistema gerenciador de banco de dados a ser utilizado (ex.: Oracle, MariaDB, MySQL, etc.); porém, é preciso conhecer o tipo de dados armazenados pelo SGBD escolhido. O modelo lógico representa a estrutura do banco de dados da forma como ele será manipulado pelos sistemas gerenciadores de banco de dados. Aqui, será considerado o modelo relacional de dados para o projeto de banco 33 Banco de Dados | Unidade 2 - Abstração, Modelo de Dados e Modelagem de Banco de Dados de dados. Neste caso, o modelo lógico deve mapear as entidades provenientes do modelo conceitual para as estruturas do modelo relacional. Em outras palavras, as entidades expressas em um esquema conceitual são mapeadas para tabelas no esquema lógico. No modelo lógico, os tipos de dados, bem como suas restrições de domínio, referencial ou definida pelos usuá- rios, também são considerados. A Figura 14 ilustra o esquema lógico subsequente ao esquema conceitual da Figura 13. Figura 14 – Esquema lógico Produto Tipo Produto PK PKcódigo INT codTipo INT descrição VARCHAR(50)descrição VARCHAR (100) preço FLOAT FK codTipo INT Fonte: Adaptadade HEUSER, 2009. Se houver uma modificação no tipo de software de banco de dados, será preciso alterar também o esquema lógico, pois o modelo lógico é dependente do tipo do SGBD escolhido. Em contrapartida, o modelo lógico é inde- pendente de hardware, pois não é afetado pela escolha do servidor em que o sistema gerenciador de banco de dados será instalado. 2.9 Modelo físico O nível mais baixo da abstração dos dados corresponde ao modelo físico. Neste nível, os dados são descritos de acordo com o modo de armazenamento do mesmo, como discos ou fitas. O modelo físico é construído a partir do modelo lógico e descreve as estruturas físicas de armazenamento de dados, tais como tipos e tamanhos de campos, índices, domínios de preenchimento dos campos, nomenclaturas, gatilhos, etc. Sendo assim, o modelo físico depende da implementação específica do SGBD, dos métodos de acesso aos arquivos e dos tipos de dispo- sitivos de armazenamento que o sistema operacional suporta. Para ilustrar um esquema físico, considere que o sistema gerenciador de banco de dados escolhido seja o MySQL. Como já mencionado, este SGBD armazena dados relacionais em tabelas. O esquema físico subsequente ao esquema lógico expresso na Figura 14 é expresso da seguinte maneira: 34 Banco de Dados | Unidade 2 - Abstração, Modelo de Dados e Modelagem de Banco de Dados CREATE Database Produtos; USE Produtos; CREATE Table TipoProduto ( codTipo INT PRIMARY KEY, descricao VARCHAR(50) ); CREATE Table Produto ( codigo INT PRIMARY KEY, descricao VARCHAR(100), preco FLOAT, codTipo INT, CONSTRAINT fktipoproduto FOREIGN KEY (codTipo) REFERENCES TipoProduto(codTipo) ); 2.10 Independência de dados As categorias de modelo de dados divididas em três níveis auxiliam no entendimento do conceito de indepen- dência de dados. Elmasri e Navathe (2010) definem a independência de dados como a capacidade de mudança de um esquema de dados em um nível inferior, sem que ele cause mudanças de esquema no nível superior mais próximo. Eles ainda destacam que existem dois tipos de independência de dados: a independência de dados lógica e a independência física de dados. • Independência de dados lógica: é a capacidade de mudar o esquema lógico sem a necessidade de alterar os programas que utilizam o banco de dados. Dessa forma, os usuários são protegidos contra alte- rações na estrutura lógica dos dados. • Independência física de dados: o esquema físico de um banco de dados oculta detalhes sobre como os dados estão, de fato, armazenados no disco rígido; como exemplo, os índices e as estruturas dos arquivos. Logo, o esquema físico isola os usuários de alterações nos detalhes de armazenamento. Consequente- mente, os aplicativos também não serão afetados. A independência de dados provoca a imunidade dos programas em relação às mudanças que ocorrem nas estru- turas de banco de dados, o que pode ser entendido como uma das maiores vantagens na utilização de um SGBD. O quadro 1 resume os níveis de abstração de dados e indica as dependências correspondentes. 35 Banco de Dados | Unidade 2 - Abstração, Modelo de Dados e Modelagem de Banco de Dados Quadro 1 – Níveis de abstração de modelos de dados e suas dependências Modelo Grau de abstração Foco Dependência Conceitual Alto Visão geral do banco de dados. Independente de tecnologias. Lógico Médio Representar os dados de acordo com o modelo de dados utilizado pelo SGBD escolhido. Tipo do modelo de dados utilizado pelo SGBD. Físico Baixo Definir as estruturas físicas dos dados, bem como seus tipos e restrições. Implementação física do SGBD. Fonte: Adaptado de ROB; CORONEL, 2010. p. 56. As categorias de modelo de dados são semelhantes aos conceitos de arquitetura em três níveis definidos pelos principais autores de banco de dados. Por isso, é recomendado que você leia mais sobre a arquitetura de três níveis nos livros Sistemas de banco de dados, de Elmasri e Navathe (2010), e Sistemas de gerenciamento de banco de dados, de Rama- krishnan e Gehrke (2010). Fique atento! Síntese da unidade Nesta unidade, foi explorado o conceito de abstração de dados, que é fundamental para se modelar um banco de dados. Além disso, foi discutido como as necessidades dos usuários costumam ser expressas e o que são os chamados minimundos ou universos de discurso. Os modelos de dados são utilizados para a abstração de um ambiente de dados real e complexo. Projetistas de banco de dados se comunicam com os programadores de sistemas ou os usuários de aplicação através dos modelos de dados. Os componentes básicos para uma boa modelagem de dados são entidades, atributos, rela- cionamentos e restrições. Nesta unidade, também foram discutidos os diversos modelos de dados existentes, dos mais antigos e já obso- letos até os mais modernos; são eles: o modelo hierárquico, em rede, relacional, entidade-relacionamento e o modelo orientado a objetos. Existem outros modelos, ainda mais novos, que não foram abordados nesta uni- dade, pois o foco é o projeto de sistemas de banco de dados relacionais. 36 Banco de Dados | Unidade 2 - Abstração, Modelo de Dados e Modelagem de Banco de Dados O projeto de um banco de dados tem como etapa fundamental a modelagem de dados a partir do momento em que se é definido o modelo de dados que será utilizado. Porém, foi discorrido que a etapa de modelagem pode ser categorizada em três etapas: a modelagem conceitual, que visa obter um esquema de alto nível da solução de banco de dados; a modelagem lógica, que foca na organização lógica dos dados, bem como em suas restri- ções e domínio de acordo com o tipo do sistema gerenciador de banco de dados que será utilizado; e por fim, a modelagem física, que corresponde ao conjunto de instruções que, de fato, cria as estruturas dos dados segundo definições da implementação física de um banco de dados (SGBD). Por último, foi ponderado que a independência dos dados é de muita importância no contexto de sistemas de banco de dados. Afinal, essa independência protege as aplicações que utilizam os bancos de dados (também chamadas de visão dos dados) de eventuais mudanças nos esquemas lógicos dos dados. 37 Considerações finais Os sistemas de banco de dados foram desenvolvidos com o propósito de facilitar, ao máximo, as operações de criação e manutenção, comparti- lhamento, segurança e independência dos dados. Porém, se um banco de dados for mal projetado, pode ser que todas as vantagens e benefícios acabem trazendo prejuízos às organizações. É importante destacar que um banco de dados bem projetado e mode- lado poderá ser reutilizado em outros contextos ou, então, ter partes de seu esquema reutilizado. Também foi discutido que o modelo conceitual é independente de tecno- logias ou modelos de dados específicos. Desta forma, é possível mapear um esquema conceitual para diversos modelos de dados diferentes, bem como promover arquiteturas híbridas para o armazenamento dos dados. Com o crescente volume de dados criados e compartilhados na internet, os bancos de dados se fazem cada vez mais necessários para sua manu- tenção. Sendo assim, tenha sempre em mente que tudo se inicia a partir da modelagem desses dados nos diferentes níveis de abstração: concei- tual, lógico e físico. 38 3Unidade 33. Projeto de Banco de Dados – Modelagem Conceitual Para iniciar seus estudos Nesta unidade, será esclarecido o funcionamento do projeto conceitual de um banco de dados por meio da apresentação da forma mais utilizada para se criar esquemas conceituais: o modelo entidade-relacionamento (ER). Podemos dizer que essa é a primeira fase do projeto de um banco de dados. Porém, o projeto conceitual é uma fase muito importante, pois nele extraímos todos os requisitos e exigências dos usuários. Objetivos de Aprendizagem • Identificar os elementos estruturais que compõem o modelo enti- dade-relacionamento, tais como entidade, relacionamento, atri- butos e restrições. • Manipular o modeloentidade-relacionamento. • Abstrair dados provenientes de minimundos para criar esquemas conceituais utilizando-se do diagrama entidade-relacionamento (DER). 39 Banco de Dados | Unidade 3 - Projeto de Banco de Dados – Modelagem Conceitual Introdução da unidade Todo projeto de banco de dados precisa possuir uma ideia, um ponto central; ou seja, precisa de uma represen- tação que auxilie no entendimento do que será armazenado. Para isso, a modelagem de dados tem o objetivo de apresentar uma representação dos dados de uma aplicação, de forma resumida e não redundante. Em projetos conceituais de banco de dados, o modelo entidade-relacionamento é o mais conhecido e utilizado por projetis- tas para representar os dados de um sistema de banco de dados. Machado (2014) diz que atualmente o projeto de banco de dados para sistemas de aplicação não é mais uma tarefa a ser realizada somente por profissionais especializados em bancos de dados. Segundo o autor, os analistas de sistemas, mesmo que sem prévia experiência em banco de dados, utilizam as técnicas estruturadas (como o modelo ER) para projetar bancos de dados. Porém, ainda que existam modelos de dados que visem à padronização da modelagem dos dados, há profissio- nais que fazem uso de técnicas pessoais ou, então, que distorcem as técnicas existentes, criando variações em modelos universalmente conhecidos. Essa é uma das principais causas de falhas em projetos de banco de dados. Um bom projeto de banco de dados é embasado pelo uso de técnicas previamente desenvolvidas e conhecidas pelos projetistas de banco de dados. O uso dessas técnicas permite a validação de requisitos junto aos usuários finais de banco de dados – para quem os BDs são projetados – por conter esquemas simples e de fácil entendi- mento. Outro fator importante do uso de modelos de dados conceituais é que se permite o compartilhamento de soluções já modeladas, visto que determinado problema pode ser comum a vários usuários. Nesta unidade, descreveremos os conceitos da estruturação de dados e as restrições do modelo entidade-rela- cionamento. Discutiremos também o uso do modelo ER para a criação de esquemas em projetos conceituais de banco de dados. Será apresentada uma notação diagramática do modelo ER para auxiliar o processo de desen- volvimento dos esquemas conceituais, que são os diagramas entidade-relacionamento (DER). 3.1 Modelo entidade-relacionamento (ER) O modelo entidade-relacionamento (ER) foi publicado por Peter Chen em 1976 em seu artigo The Entity-Relationship Model: Toward a Unified View of Data (CHEN, 1976). O modelo ER é conceitual e tem como objetivo representar o mundo real como entidades e seus relacionamentos com outras entidades. Segundo Peter Chen, para se visualizar uma realidade, é preciso se basear nos relacionamentos entre as entida- des que retratam os fatos de tal realidade. Dessa forma, tanto as entidades quanto os relacionamentos podem possuir atributos que auxiliam na caracterização da realidade que está sendo modelada. A seguir, serão apresentados os componentes que compõem o modelo entidade-relacionamento em termos de definições e exemplos. Ao mesmo tempo, serão apresentados os componentes gráficos que representam tais componentes de modo gráfico. Os componentes gráficos também são chamados de diagrama entidade-rela- cionamento (DER). 40 Banco de Dados | Unidade 3 - Projeto de Banco de Dados – Modelagem Conceitual 3.1.1 Entidade e tipos de entidades Um dos objetos básicos que o modelo entidade-relacionamento utiliza para representar partes envolvidas de determinado domínio são as entidades, que representam algo do mundo real que possui uma existência inde- pendente, seja física ou conceitualmente. As entidades físicas são aquelas cuja existência é tangível, ou seja, elas existem e são visíveis no mundo real. Como exemplo de entidades físicas (FIGURA 15), podemos citar uma pessoa, um carro, um prédio ou até mesmo objetos como livros, roupas, perfumes, computadores, etc. Em suma, qualquer “coisa” do mundo real que possua uma existência física é chamada de entidade física. Figura 15 – Exemplo de entidades do mundo real: pessoa, carro, casa e animal Fonte: SHUTTERSTOCK, 2018. Já as entidades conceituais – também chamadas de entidades lógicas – são aquelas que existem devido à inte- ração com outras entidades, com uma existência conceitual, ou aquelas que fazem sentido em determinado contexto, porém, não existem fisicamente no mundo real. Por exemplo, uma empresa ou um curso são entidades lógicas. Note que não estamos falando da sede da empresa ou do curso – que normalmente estão localizados em construções prediais –, e sim de seus conceitos. No modelo ER, as entidades são descritas através de substantivos concretos ou abstratos, de modo a representar claramente o seu papel em determinado contexto. Podemos citar, por exemplo, as entidades cliente, produto, venda, aluno, disciplina, curso, cargo, entre outras. As entidades podem ser classificadas em dois diferentes tipos, de acordo com o motivo da sua existência: • Entidades fortes: são entidades cuja existência é independente de outras entidades ou aquelas que representam algo do mundo real com existência própria. Por exemplo, em um contexto em que produtos são vendidos, os produtos vendidos são considerados como entidades fortes, pois sua existência é inde- pendente da venda. • Entidades fracas: são entidades cuja existência depende de outras entidades para existirem, pois, sozi- nhas, não fazem sentido. No caso do exemplo das vendas e produtos, uma venda sem itens (produtos) 41 Banco de Dados | Unidade 3 - Projeto de Banco de Dados – Modelagem Conceitual não faria sentido. Logo, a entidade venda depende da entidade produto. Outro exemplo clássico para ilustrar entidades fracas é a entidade dependente. Filhos, cônjuge e pais, por exemplo, podem ser con- siderados dependentes de um funcionário em uma empresa. Logo, a existência de uma instância da entidade dependente está sujeita à existência da instância de uma entidade funcionário. Afinal, não faria o menor sentido, em um contexto empresarial, a existência de um dependente sem que haja um funcio- nário associado. No diagrama entidade-relacionamento, uma entidade forte é representada por um retângulo, e uma entidade fraca é representada por um duplo retângulo. Em ambos os casos, o nome das entidades se localizam no interior do retângulo. A Figura 16 ilustra as entidades forte e fraca. Figura 16 – Exemplo da representação das entidades forte e fraca Funcionário ← Entidade forte Entidade fraca → Dependente Fonte: Adaptada de ELMASRI; NAVATHE, 2010, p. 38. 3.2 Atributos Atributos são as propriedades que descrevem as entidades. Por exemplo, uma entidade Aluno possui diversas características comuns às suas instâncias. Essas características podem ser o nome, sobrenome, e-mail, telefone e número de matrícula. A notação original do modelo ER apresentada por Peter Chen representa os atributos de uma entidade como elipses ligadas aos retângulos das respectivas entidades. A Figura 17 ilustra uma entidade e seus atributos. Figura 17 – Exemplo da representação das entidades e seus atributos nome sobrenome e-mail telefone matrícula Aluno Fonte: Adaptada de MACHADO, 2014, p. 238. 42 Banco de Dados | Unidade 3 - Projeto de Banco de Dados – Modelagem Conceitual 3.2.1 Atributo identificador (chave) Atributo identificador – também conhecido como atributo-chave ou chave primária – é o conjunto de um ou mais atributos que tem a finalidade de identificar exclusivamente cada instância de cada entidade. Para ilustrar sua importância, considere o exemplo da entidade Aluno. Dentro de uma universidade, escola ou afins, podem existir diversos alunos com o mesmo nome. Em contrapartida, determinados alunos, mesmo que possuam nomes idênticos (incluindo sobrenome), não podem possuir o mesmo número de matrícula (ou até mesmo o CPF). Logo, o atributo identificador visadistinguir diferentes instâncias de determinada entidade. No modelo entidade-relacionamento, os atributos-chave são expressos por meio de elipses; porém, possuem seu nome sublinhado. Pode haver casos em que uma entidade faça uso das chaves compostas, ou seja, quando é preciso mais de um atributo para identificar unicamente uma instância de uma entidade. Da mesma forma, sub- linham-se todos esses atributos para indicar que são atributos identificadores, formando, assim, a chave com- posta. A Figura 17 ilustra a notação gráfica de atributos-chave por meio do atributo matrícula, que se encontra sublinhado. 3.2.2 Atributos simples e compostos Os atributos podem ser classificados como simples e compostos. Atributo simples é um atributo que não pode ser dividido, pois já constitui uma unidade atômica. Por exemplo, os atributos idade, sexo, estado civil e unidade federativa são simples, pois não podem ser divididos. Atributo composto, por sua vez, é aquele que pode ser subdividido em vários outros atributos. Por exemplo, con- sidere o atributo Endereço. Sabemos que um endereço pode ser expresso por uma rua, um número, um bairro, uma cidade, um estado e um CEP. Da mesma forma, um atributo Telefone pode ser subdividido nos atributos código do país, código de área e o número do telefone propriamente dito. A Figura 18 ilustra a representação diagramática do atributo composto: Endereço. Figura 18 – Exemplo da representação de atributos simples e compostos Funcionário Nome Rua Número Bairro Cidade Sobrenome Endereço Fonte: Adaptada de MACHADO, 2014, p. 72. 43 Banco de Dados | Unidade 3 - Projeto de Banco de Dados – Modelagem Conceitual 3.2.3 Atributos monovalorados e multivalorados Atributos monovalorados são aqueles que podem apenas possuir um valor. Exemplos: uma pessoa pode possuir apenas um número junto ao cadastro de pessoas físicas (CPF); um veículo pode possuir apenas um número de chassi, entre outros. Porém, é importante ressaltar que um atributo monovalorado não é necessariamente um atributo simples. No caso dos chassis automotivos, este atributo pode ser subdividido em outros atributos que são, o identificador de fabricante mundial (WMI), a seção descritiva do veículo (VDS) e a seção indicadora de veículo (VIS). Atributos multivalorados são atributos que possuem ou podem possuir muitos valores. Por exemplo, uma pes- soa pode possuir vários graus de ensino (bacharel, mestrado e doutorado) ou, ainda, vários números de telefone (fixo, celular e trabalho). No diagrama entidade-relacionamento, os atributos multivalorados são representados por uma dupla elipse. A Figura 19 ilustra o exemplo de um atributo multivalorado (telefone). Figura 19 – Atributo multivalorado (telefone) em uma entidade Funcionário Nome Rua Número Bairro Cidade Telefone Endereço Fonte: Adaptada de MACHADO, 2014, p. 74. 3.2.4 Atributos derivados e armazenados Ao se modelar dados, pode haver casos em que dois ou mais atributos podem estar relacionados. Por exemplo, os atributos Idade e Data de Nascimento. Para uma entidade do tipo Pessoa, o atributo Idade pode ser calculado a partir do atributo Data de Nascimento, considerando a data corrente (hoje); ou seja, o atributo Idade é cha- mado de atributo derivado, pois ele é derivado do atributo data de nascimento. O atributo data de nascimento (dataNascimento) é chamado de atributo armazenado, pois seu dado respectivo, de fato, estará armazenado no banco de dados. No diagrama entidade-relacionamento, os atributos derivados são representados por elipses com traços intermitentes. A Figura 20 ilustra a representação de um atributo derivado. 44 Banco de Dados | Unidade 3 - Projeto de Banco de Dados – Modelagem Conceitual Figura 20 – Atributo derivado (idade) em uma entidade Pessoa Nome Telefone Idade Data de Nascimento Fonte: Adaptada de ELMASRI; NAVATHE, 2010, p. 68. 3.3 Relacionamentos Um relacionamento pode ser expresso por uma associação entre entidades. Logo, as entidades que participam de um relacionamento são chamadas de entidades participantes. Os relacionamentos possuem papéis, que são identificados pelos nomes que os descrevem. Dessa forma, é possível identificar diversos relacionamentos entre as mesmas entidades. Para se nomear os relacionamentos, normalmente são utilizados verbos em voz passiva ou voz ativa. Por exemplo, um Aluno frequenta uma Turma. Um Professor leciona em um Curso. Um Professor coordena um Curso. Note que, entre Professor e Curso, há dois relacionamentos distintos: um que indica o papel do professor como parte do corpo docente de um curso, e outro que mostra o papel de coordenador que um professor pode exercer em um curso. No DER, os relacionamentos são expressos por um losango com o nome do relacionamento no interior do losango. A Figura 21 ilustra o exemplo de um relacionamento entre as entidades Aluno e Turma. Figura 21 – Relacionamento entre as entidades Aluno e Turma FREQUENTAALUNO TURMA N 1 Fonte: Adaptada de ELMASRI; NAVATHE, 2010, p. 58. Os relacionamentos entre as entidades podem ocorrer em ambos os sentidos. Logo, é preciso especificar como podem ocorrer as interações provenientes dos relacionamentos. Por exemplo, considere um relacionamento entre um Aluno e um Curso, que é ditado das seguintes formas: Um Aluno pode se matricular em apenas um Curso. Um Curso pode conter vários Alunos. 45 Banco de Dados | Unidade 3 - Projeto de Banco de Dados – Modelagem Conceitual Com essa especificação, podemos identificar a quantidade de instâncias de um relacionamento das quais a enti- dade pode participar. A essa especificação é dado o nome de razão de cardinalidade ou apenas cardinalidade. A razão de cardinalidade para o relacionamento entre as entidades Curso e Aluno (relacionamento binário) pode ser expressa pela razão de cardinalidade 1:N. As possíveis razões de cardinalidade para relacionamentos binários são: 1:1, 1:N, N:1 e N:M. A seguir, discorreremos sobre cada uma delas; além disso, será discutido o conceito de participação de relacionamento. 3.3.1 Relacionamento 1:1 Um relacionamento um para um (1:1) é utilizado quando se permite apenas uma ocorrência de dada entidade em um relacionamento. Por exemplo, considere as entidades Empregado e Departamento e um relacionamento entre elas denominado Gerência. Em outras palavras, podemos dizer que um empregado gerencia apenas um departamento e que um departamento é gerenciado por apenas um empregado. A Figura 22 ilustra o relacio- namento em questão. Figura 22 – Relacionamento Gerência 1:1 EMPREGADO e1 • r1 d 1 d 2 d 3 e2 • e3 • e4 • e5 • e6 • e7 • GERÊNCIA DEPARTAMENTO r2 r3 Fonte: ELMASRI; NAVATHE, 2010, p. 47. 3.3.2 Relacionamentos 1:N e N:1 Os relacionamentos um para muitos (1:N) e muitos para um (N:1) são análogos, visto que eles são diferencia- dos apenas pela direção em que ocorre a restrição de participação do relacionamento. Para ilustrar melhor esse relacionamento, considere a Figura 23. Nesse caso, um empregado pode trabalhar apenas para 1 departamento; porém, um departamento pode possuir diversos empregados. Ou seja, a cardinalidade do relacionamento Empre- gado e Departamento é N:1. Há ainda um relacionamento 1:N entre as entidades Departamento e Empregado. 46 Banco de Dados | Unidade 3 - Projeto de Banco de Dados – Modelagem Conceitual Figura 23 – Instâncias do relacionamento TRABALHA_PARA, N:1 EMPREGADO TRABALHA PARA DEPARTAMENTO e1 • e2 • e3 • e4 • e5 • e6 • e7 • r1 r2 r3 r4 r5 r6 r7 d 1 d 2 d 3 Fonte: ELMASRI; NAVATHE, 2010, p. 44. 3.3.3 Relacionamento N:M O relacionamento muitos para muitos (N:M ou N:N, dependendo do autor) ocorre quando há a possibilidade de ocorrência de diversas instâncias de ambas as entidades que participam do relacionamento binário. Para ilustrar melhor esse relacionamento, considere a seguinte restrição de um minimundo: em determinada empresa, um empregado pode trabalhar em diversos projetos ao mesmo tempo. Cada
Compartilhar