1 Apostila de Banco de Dados 1.) Banco de Dados Definição: conjuntos de dados inter-relacionados que tem como objetivo atender a uma comunidade de usuários. A Informação é o valor fornecido pelo usuário e que será cadastrado no banco de dados. O Dado é o valor cadastrado no banco de dados, que é exportado para o usuário por meio de consultas realizadas. Todos nós sabemos existirem gigantescas bases de dados gerenciando nossas vidas. De fato sabemos que nossa conta bancária faz parte de uma coleção imensa de contas bancárias de nosso banco. Nosso Título Eleitoral ou nosso Cadastro de Pessoa Física, certamente estão armazenados em Bancos de Dados colossais. Sabemos também que quando sacamos dinheiro no Caixa Eletrônico de nosso banco, nosso saldo e as movimentações existentes em nossa conta bancária já estão à nossa disposição. Nestas situações sabemos que existe uma necessidade de se realizar o armazenamento de uma série de informações que não se encontram efetivamente isoladas umas das outras, ou seja, existe uma ampla gama de dados que se referem aos relacionamentos existentes entre as informações a serem manipuladas. Para registrarmos as necessidades de informação de uma realidade, precisamos fazer uso de um modelo, ou seja, algo que nos mostre como as informações estão relacionadas (fatos). E com base no modelo criado, os analistas podem interagir com os usuários validando seus objetivos e metas, permitindo a construção de um sistema de informações cada vez mais próximo da realidade do usuário. Diagrama do Projeto de BD 1 Os Bancos de Dados, além de manterem todo um volume de dados organizado, também devem permitir atualizações, inclusões e exclusões do volume de dados, sem nunca perder a consistência. E na maioria das vezes ocorrerão acessos concorrentes a várias tabelas do banco de dados, algumas vezes com mais de um acesso ao mesmo registro de uma mesma tabela. 1 2 Um Banco de Dados contém os dados dispostos numa ordem pré-determinada em função de um projeto de sistema, sempre para um propósito muito bem definido. Um Banco de Dados representará sempre aspectos do Mundo Real. Assim sendo uma Base de Dados (ou Banco de Dados, ou ainda BD) é uma fonte de onde poderemos extrair uma vasta gama de informações derivadas, que possui um nível de interação com eventos como o Mundo Real que representa. Projeto Conceitual Projeto Lógico Projeto Físico 2.) Sistemas de Banco de Dados Com o passar do tempo às formas de compartilhamento de dados em BD foram se desenvolvendo e se aprimorando. Vários problemas, como por exemplo redundância de dados foram sendo sanados. Inicialmente existia o sistema de processamento de arquivos e hoje nós trabalhamos com os SGBDs. 2.1.) Sistema de Processamento de Arquivos No Sistema de Processamento de Arquivos (sistemas isolados), há subordinação dos programas aos arquivos, cada aplicação possui seus próprios dados e tem seu próprio arquivo. Então os dados se tornam repetitivos, as informações inconsistentes, há falta de integridade, há pouca proteção contra danos físicos aos meios de armazenamento, mas a segurança contra o acesso indevido é boa, pelo fato de só você ter acesso à sua aplicação, o programador se torna o “dono” da aplicação, dificuldade no desenvolvimento de novas aplicações e a manutenção se torna difícil e cara. A Figura 1 apresenta o sistema de processamento de arquivos. Produção Vendas Compras Arquivos de Produção Arquivos de Produção Arquivos de Produção Produtos Produtos Produtos Este esquema tem um grande número de desvantagens: Redundância de dados. Ocorre quando uma determinada informação está representada no sistema em computador várias vezes. Existem dois tipos de redundância de dados, a controlada e a não controlada. A redundância controlada acontece quando o software tem conhecimento da múltipla representação da informação e garante sincronia entre as diversas 2 3 representações. Na redundância não controlada, a responsabilidade pela manutenção da sincronia entre as diversas representações de uma informação está com o usuário e não com o software (deve ser evitado – entrada repetida da mesma informação e inconsistências de dados). Por exemplo, o nome e o endereço de um aluno poderão estar cadastrados no arquivo de turmas, no arquivo de cursos extracurriculares e no arquivo de estagiários. Esta redundância leva a altos custos de armazenamento e acesso. Inconsistência de dados. A repetição de informações, pode ainda levar a inconsistência de dados, que significa que as várias cópias do mesmo dado podem ser diferentes. Por exemplo, um aluno muda de endereço duas vezes no mesmo ano, no início desde ano, o endereço é “x” ao se cadastrar no colégio, já no meio do semestre, após a primeira mudança, se matriculou em um curso extra o endereço agora é “y” e no final do ano, após a segunda mudança, decidiu se candidatar para futuros estágios e o endereço atual é “z”. Isto resulta em uma inconsistência de dados. Dificuldade no acesso aos dados. Suponha que um dos coordenadores da escola necessite encontrar os nomes de todos os alunos que vivem num determinado bairro para encaminha-los para estágios. O coordenador pede à secretaria que gere tal lista. Caso este tipo de solicitação não tenha sido antecipado quando o sistema original foi projetado, não há nenhum programa aplicativo disponível para fazê-lo. Existe, entretanto, um programa aplicativo para gerar uma lista de todos os alunos da escola. O coordenador tem agora duas saídas: ou ele pega a lista de alunos e extrai a informação necessária manualmente, ou pede que um programador escreva o programa aplicativo necessário. Ambas as alternativas são obviamente insatisfatórias. Suponha que tal programa tenha sido de fato escrito e que, alguns dias mais tarde, o mesmo coordenador necessite destacar da mesma lista os alunos com média acima de oito nas disciplinas técnicas. Como é de se esperar, um programa para gerar tal lista não existe. Novamente, o coordenador tem duas opções, e nenhuma delas é satisfatória. Anomalias de acesso concorrente. Com a intenção de aperfeiçoar o desempenho geral do sistema e obter tempos de resposta mais rápidos, muitos sistemas permitem que múltiplos usuários atualizem os dados simultaneamente. Em tal ambiente, a interação de atualizações concorrentes pode resultar em dados inconsistentes. Problemas de integridade. Os valores dos dados armazenados nos bancos de dados precisam satisfazer certos tipos de restrições. Por exemplo, um aluno terá a sua matrícula cancelada caso possua freqüência nula por três meses seguidos sem justificativas. Entretanto, quando novas restrições são adicionadas, é difícil alterar os programas. O problema torna-se mais complicado quando as restrições envolvem diversos itens de dados de arquivos diferentes. 2.2.) Sistema de Gerenciamento (Gerenciador) de Banco de Dados Hoje em dia, a grande maioria dos programas comunica-se com os usuários utilizando interfaces gráficas de janelas. Entretanto, normalmente, os programas não contém todo o código referente a exibição dos dados da interface, mas utilizam gerenciadores de interface de usuário. Da mesma forma, para comunicar-se com processos remotos, usam gerenciadores de comunicação. Para manter grandes repositórios compartilhados de dados, ou seja, para manter banco de dados, são usados Sistemas de Gerência de Bancos de Dados (SGBD). 3 4 No Sistema de Gerenciamento de Banco de Dados, existe um gerenciador entre as aplicações e a base de dados comum a estas aplicações. Então reduz a redundância, evita a inconsistência, mantém a integridade e a transparência de dados, utiliza “visões do usuário”, atende as exigências de informações de todas as aplicações, facilita o desenvolvimento de novas aplicações e a aplicação das restrições de segurança. 1.1.5 APLICAÇÃO1 1.1.6 1.1.3 1 APLICAÇÃO2 G 1.1.4 1.1.1 2 APLICAÇÃO3 B 1.1.2 3 S D Um SGBD é uma coleção de programas que permitem ao usuário definir, construir e manipular Bases de Dados para as mais diversas finalidades. Vamos definir algumas regras básicas e claras para um sistema de manipulação de dados ser considerado um SGBD. Fica implícito que se ao menos uma das características abaixo não estiver presente no nosso "candidato" a SGBD, este poderá ser um GA (Gerenciador de Arquivo) de altíssima qualidade, "quase" um SGBD, mas não um SGBD. Regra 1: Auto-Contenção- Um SGBD não contém apenas os dados em si, mas armazena completamente toda a descrição dos dados, seus relacionamentos e formas de acesso. Normalmente esta regra é chamada de Meta-Base de Dados. Em um GA, em algum momento ao menos, os programas aplicativos declaram estruturas (algo que ocorre tipicamente em C, COBOL e BASIC), ou geram os relacionamentos entre os arquivos (típicos do ambiente xBase). Por exemplo, quando você é obrigado a definir a forma do registro em seu programa, você não está lidando com um SGBD. Regra 2: Independência dos Dados- Quando as aplicações estiverem realmente imunes a mudanças na estrutura de armazenamento ou na estratégia de acesso aos dados, podemos dizer que esta regra foi atingida. Portanto, nenhuma definição dos dados deverá estar contida nos programas da aplicação. Quando você resolve criar uma nova forma de acesso, um novo índice, se precisar alterar o código de seu aplicativo, você não está lidando com um SGBD. Regra 3: Abstração dos Dados- Em um SGBD real é fornecida ao usuário somente uma representação conceitual dos dados, o que não inclui maiores detalhes sobre sua forma de armazenamento real. O chamado Modelo de Dados é um tipo de abstração utilizada para fornecer esta representação conceitual. Neste modelo, um esquema das tabelas, seus relacionamentos e suas chaves de acesso são exibidas ao usuário, porém nada é afirmado sobre a criação dos índices, ou como serão mantidos, ou qual a relação existente entre as tabelas que deverá ser mantida íntegra. Assim se você desejar inserir um pedido em um cliente inexistente e esta entrada não for automaticamente rejeitada, você não está lidando com um SGBD. Regra 4: Visões- Um SGBD deve permitir que cada usuário visualize os dados de forma diferente daquela existente previamente no Banco de Dados. Uma visão consiste 4 5 de um subconjunto de dados do Banco de Dados, necessariamente derivados dos existentes no Banco de Dados. OBS.: ABSTRAÇÃO DE DADOS Um SGBD é composto de uma coleção de arquivos inter-relacionados e de um conjunto de programas que permitem aos usuários fazer acesso e modificar esses arquivos. O grande objetivo de um sistema de bancos de dados é prover os usuários uma visão abstrata dos dados, isto é, o sistema omite certos detalhes de como os dados são armazenados e mantidos. Entretanto, para que o sistema possa ser utilizado, os dados devem ser buscados eficientemente. Este conceito de abstração de dados tem direcionado o projeto de estruturas de dados complexos para a representação de dados em banco de dados. Uma vez que muitos dos usuários de banco de dados não são treinados em computação, a complexidade está escondida deles através de diversos níveis de abstração que simplificam a interação dos usuários com o sistema. Nível físico. O nível mais baixo de abstração descreve como os dados estão realmente armazenados. No nível físico são descritas a estrutura física de armazenamento do banco de dados, sua organização de arquivos e seus métodos de acesso. Nível conceitual. Neste nível de abstração descreve quais dados estão armazenados de fato no banco de dados e as relações que existem entre eles. O nível conceitual é a visão do conjunto de usuários, portanto a visão geral do banco de dados. Nível de visões. O mais alto nível de abstração descreve apenas parte do banco de dados. O nível de visões é o mais próximo dos usuários. Voltado para a forma como os dados são vistos pelos usuários individuais. Um determinado usuário, tanto pode ser um programador de aplicações como um usuário de terminal online ou um usuário final de qualquer grau de sofisticação. Descreve as partes do banco de dados que são do interesse de um ou vários usuários, escondendo as demais partes que não são do seu interesse. NÍVEL DE VISÕES (VISÃO DO USUÁRIO INDIVIDUAL) NÍVEL CONCEITUAL (VISÃO DO CONJUNTO DE USUÁRIOS) NÍVEL FÍSICO (VISÃO DO ARMAZENAMENTO) Regra 5: Transações- Um SGBD deve gerenciar completamente a integridade referencial definida em seu esquema, sem precisar em tempo algum, do auxílio do 5 6 programa aplicativo. Desta forma exige-se que o banco de dados tenha ao menos uma instrução que permita a gravação de uma série modificações simultâneas e uma instrução capaz de cancelar uma série modificações. Por exemplo, imaginemos que estejamos cadastrando um pedido para um cliente, que este deseje reservar 5 itens de nosso estoque, que estão disponíveis e portanto são reservados, porém existe um bloqueio financeiro (duplicatas em atraso) que impede a venda. A transação deverá ser desfeita com apenas uma instrução ao Banco de Dados, sem qualquer modificação suplementares nos dados. Caso você se obrigue a corrigir as reservas, através de acessos complementares, você não está lidando com um SGBD. Regra 6: Acesso Automático- Em um GA uma situação típica é o chamado DeadLock, o abraço mortal. Esta situação indesejável pode ocorrer toda vez que um usuário travou um registro em uma tabela e seu próximo passo será travar um registro em uma tabela relacionada à primeira, porém se este registro estiver previamente travado por outro usuário, o primeiro usuário ficará paralisado, pois, estará esperando o segundo usuário liberar o registro em uso, para que então possa travá-lo e prosseguir sua tarefa. Se por hipótese o segundo usuário necessitar travar o registro travado pelo primeiro usuário, afirmamos que ocorreu um abraço mortal, pois cada usuário travou um registro e precisa travar um outro, justamente o registro anteriormente travado pelo outro. Imaginemos um caso onde o responsável pelos pedidos acabou de travar o Registro Item de Pedido, e, necessita travar um registro no Cadastro de Produtos, para indicar uma nova reserva. Se concomitantemente estiver sendo realizada uma tarefa de atualização de pendências na Tabela de Itens, e para tanto, previamente este segundo usuário travou a Tabela de Produtos, temos a ocorrência do abraço mortal. Se a responsabilidade de evitar esta ocorrência for responsabilidade da aplicação, você não está lidando com um SGBD. Um SGBD deve obedecer INTEGRALMENTE às seis regras acima. Em caso contrário estaremos diante de um GA ou de um "quase" SGBD. 3.) Os Profissionais Os Administradores de Banco de Dados (DBA) são responsáveis pelo controle ao acesso aos dados e pela coordenação da utilização do BD. Os Projetistas de Banco de Dados (DBP) são analistas que identificam os dados a serem armazenados em um Banco de Dados e pela forma como estes serão representados. Os Analistas e Programadores de Desenvolvimento, criam sistemas que acessam os dados da forma necessária ao Usuário Final, que é aquele que interage diretamente com o Banco de Dados. 4.) Modelos de Banco de Dados Definição: descrição formal da estrutura de um banco de dados. Um modelo de banco de dados é uma descrição dos tipos de informações que estão armazenados em um banco de dados. Ex.: Um modelo de dados não informa quais os produtos que estão armazenados em um banco de dados, mas apenas que o banco de dados contém informações sobre o produto. 6 7 Podem ser usados modelos diferentes para explicar a cada nível de usuário como é a organização de um banco de dados. Definição: Abordagem de modelagem é o conjunto de conceitos usados para construir modelos. Existem os modelos: Conceitual, Lógico e Físico. 4.1.) Modelo Conceitual É uma descrição da estrutura do banco de dados de forma independente de implementação em SGBD. A técnica de modelagem conceitual mais difundida é a abordagem entidaderelcionamento(ER). Esta técnica faz uso de um diagrama chamado diagrama entidaderelcionamento(DER) (1,1) Disciplina (1,m) POSSUI Professor 4.2.) Modelo Lógico Representa a estrutura de dados de um BD conforme vista pelo usuário do SGBD. O Modelo lógico é dependente do tipo particular de SGBD que está sendo usado. Exemplo de modelo lógico: Disciplina(CodDisc, Descrição, CargaHoraria) Professor(CPF, Nome, Tel, Ender, FormAcad) 4.3.) Modelo Físico Leva em consideração detalhes de armazenamento interno de informações. As linguagens utilizadas neste modelo variam de SGBD para SGBD. 5.) Projeto de Banco de Dados O projeto de um novo banco de dados dá-se em três fases: a. Modelagem Conceitual Nesta primeira fase, é construído um modelo conceitual, na forma de um diagrama entidade-relacionamento. Este modelo independe da implementação. b. Projeto Lógico Objetiva transformar o modelo conceitual obtido na primeira fase em um modelo lógico. O modelo lógico define como o banco de dados será implementado em um SGBD específico. c. Projeto Físico Nesta etapa, o modelo de BD é enriquecido com detalhes que influenciam no desempenho do BD, mas não interferem em sua funcionalidade. Alterações neste modelo não afetam as aplicações que usam o BD. Exercícios: 7 8 1-) Diga as principais diferenças entre o desenvolvimento de software com arquivos convencionais e desenvolvimento de software com SGBD. 2-) Diga, com as suas próprias palavras o que é um BD? 3-) Diga, com as suas próprias palavras o que é um SGBD? 4-) Descreva os modelos. 5-) Diga o que acontece em cada fase do projeto de BD. 6-) Um programador recebe um documento especificando precisamente a estrutura do BD. O programador deverá construir software para acessar o BD através do SGBD conforme a estrutura. Esse documento é um modelo conceitual, um modelo lógico ou um modelo físico? 7-) A definição de um tipo de dado (numérico, data, ...) faz parte do modelo conceitual, do modelo lógico ou do modelo físico? 8-) Qual a diferença entre a redundância de dados controlada e a não controlada? 9-) O que é inconsistência de dados? 10-) O que é o DER? Qual a sua finalidade? 11-) Qual é a finalidade da abstração em um SGBD? 12-) Qual o profissional que é responsável pela liberação de senhas para o uso do BD? 13-) Explique o motivo pelo qual nos sistemas isolados é tão difícil de realizar uma ação não prevista. Construa um exemplo. 8 9 6.) Abordagem Entidade-Relacionamento Foi criada por Peter Chen e é a mais usada. Os conceito centrais da abordagem ER são: entidades, relacionamentos, atributos, generalização/especialização e entidade associativa. 6.1.) Entidade Definição: conjuntos de objetos (coisas) da realidade modelada sobre os quais deseja-se manter informações no BD. Uma entidade pode representar tanto objetos concretos( um pessoa, um automóvel, ...) como objetos abstratos (um departamento, um endereço,...) No DER as entidades são representadas por retângulos: Aluno Geralmente os nomes das entidades são formadas por substantivos no singular. 6.2.) Relacionamento Definição: conjunto de associações entre ocorrências de entidades. No DER os relacionamentos são representados por losangos: Geralmente os nomes dos relacionamentos são formados por verbos ou pela composição dos nomes das entidades que fazem parte do relacionamento em questão. Exemplos de relacionamentos: ESCREVE AUTOR n ALUNO LIVRO 1 ALDIPRO m PESSOA PROFESSOR CASADA DISCIPLINA 9 10 6.2.1) TIPOS DE RELACIONAMENTOS Unário: é um relacionamento que envolve uma única entidade. casado com Pessoas Binário: é um relacionamento que envolve duas entidades. Funcionário Produz Produto Ternário: é um relacionamento que envolve três entidades. Funcionário Produz/ Utiliza Produto Ferramenta Quaternário: é um relacionamento que envolve quatro entidades. Máquina Funcionário Produz/ Utiliza/ Opera Produto Ferramenta 6.2.2) CARDINALIDADE DE RELACIONAMENTOS Uma restrição importante é o mapeamento de cardinalidade que expressa o número de entidades ao qual outra entidade pode estar associada via um conjunto de relacionamentos. Há duas cardinalidades a considerar: a cardinalidade máxima e a cardinalidade mínima. A cardinalidade indica quantas ocorrências de entidade (no mínimo ou no máximo) podem estar associadas através de um relacionamento. Para o projeto de banco de dados, apenas duas cardinalidades máximas são relevantes: a cardinalidade máxima 1 e a cardinalidade máxima muitos, referida pela 10 11 letra m. A cardinalidade máxima é usada para classificar relacionamentos binários. Relacionamentos binários são aqueles cujas ocorrências envolvem duas entidades. Portanto havendo relacionamento entre duas entidades, a próxima etapa é identificar a cardinalidade, ou seja, quantos registros de uma entidade A estão associados a um registro da entidade B e vice-versa. Os registros podem estar associados de três modos diferentes: Relacionamento um para um (1:1): O relacionamento um para um ocorre quando, para cada uma ocorrência na entidade A, temos somente uma ocorrência na entidade B; Relacionamento um para muitos (1:m): Este é o relacionamento em que temos n ocorrências de uma entidade associada a uma ocorrência de outra entidade; Relacionamento muitos para muitos (n:m): Neste tipo de relacionamento, não existe restrição na formação das associações, ou seja, uma ocorrência da A pode estar associada a n ocorrências de uma entidade B e vice versa. 1 1 COORDENA COORDEADOR m 1 DISCIPLINA CURSO PROFESSOR POSSUI n ALUNO m DISCIPLINA ALUDIS Relacionamento Um-para-Um (1:1) Neste grau de relacionamento, cada elemento de uma entidade relaciona-se com um e somente um elemento de outra identidade. Sentido de leitura 1 homem homem 1 mulher casado 1 1 casado mulher Resultado: (1:N) 11 12 Relacionamento de Um-para-Muitos (1:N) Este grau de relacionamento é o mais comum no mundo real, sendo o que denominamos de relacionamento básico entre entidades, entretanto possui características específicas, quanto ao sentido de leitura dos fatos e sua interpretação. Um elemento da entidade 1 relaciona-se com muitos elementos da unidade 2, mas cada elemento da entidade 2 somente pode estar relacionado a um elemento da entidade 1. Ou seja, o grau de cardinalidade deterninante sempre é o maior grau obtido da interpretação dos fatos. Sentido de leitura time 1 time 1 N possui 1 possui jogadores jogadores Resultado: (1:N) Relacionamento de Muitos-para-Muitos (N:N) Identifica-se esta cardinalidade pelo fato de que em ambos os sentidos de leitura encontramos um grau Um-para-Muitos, o que caracteriza ser então um contexto geral de Muitos-para-Muitos. sentido de leitura time 1 time N N possui 1 possui jogadores jogadores Resultado (N:N) 12 13 Existem casos em que os relacionamentos acontecem entre mais de duas entidades. Estes relacionamentos de grau maior do que dois (relacionamentos ternários, quaternários,...). No caso de relacionamentos de grau maior que dois, o conceito de cardinalidade de relacionamento é uma extensão não trivial do conceito de cardinalidade em relacionamentos binários. Lembre-se que, em um relacionamento binário R entre duas entidades A e B, a cardinalidade máxima de A em R indica quantas ocorrências de B podem estar associadas a cada ocorrência A No caso de um relacionamento ternário, a cardinalidade refere-se a pares de entidades. Em um relacionamento R entre três entidades A, B e C, a cardinalidade máxima de A e B dentro de R indica quantas ocorrências de C podem estar associadas a um par de ocorrências de A e B. Obs.: No DER podemos usar, para indicar um relacionamento identificador, uma linha mais densa. 1 N RESPON DIRETOR SETOR 6.2.3) OUTRA NOTAÇÃO (ENGENHARIA DE INFORMAÇÕES) A Engenharia de Informações é um método de desenvolvimento de sistemas de informação proposto no início da década de 80, por Martin e Finkelstein. Ex.: (1,1) (0,N) RESPON DIRETOR SETOR Código Nome CódigoSet NomeSet Cardinalidade: Max e Min. Um(1) Min zero(0) Max Muitos(N) 13 14 6.3.) Atributo Definição: São os dados que compõem a entidade. Algumas vezes os atributos não são colocados no diagrama para não sobrecarregar, nestes casos usa-se uma descrição textual. ALUNO MAT Nome Atributo identificador é o conjunto de um ou mais atributos que servem para determinar uma ocorrência da entidade em relação as outras ocorrências. Um atributo pode possuir uma cardinalidade, de maneira análoga a uma entidade em um relacionamento. No caso de a cardinalidade ser (1,1) ela pode ser omitida do diagrama. ALUNO Mat Nome Telefone(0,n) O nome a matrícula são atributos obrigatórios(1,1), possuem no mínimo um valor associado na entidade e no máximo um valor associado. O telefone é um atributo opcional(0,1), pode possuir no mínimo nenhuma ocorrência e no máximo várias. Exercícios: 1-) Explique a diferença entre entidade e ocorrência de entidade. 2-) Dê exemplos de entidades com vários tipos de identificadores: Uma entidade cujo identificador é composto por único atributo, Um relacionamento cujo identificador é composto por mais de um atributo, 3-) Dê no mínimo 5 exemplos de:entidades, atributo e atributo identificador. 4-) Baseado no DER abaixo,descreva o possível mini-mundo que o gerou. N PRODUTO N TEM FABRICANTE 14 15 5-) Deseja-se modelar os clientes de uma organização. Cada cliente possui um identificador, um nome, um endereço e um país. Discuta as vantagens e desvantagens das duas alternativas de modelagem de país: a-) Como atributo da entidade cliente; b-) Como entidade relacionada a cliente. 6-) Transforme o DER do exercício 4 para a notação da Engenharia da Informação. 7.) Modelo Relacional Definição: representa e/ou descreve a realidade do ambiente do problema, constituindo-se em uma visão global dos principais dados e relacionamentos, independente de restrições de implementação. Quanto mais organizadas estiverem as informações no Banco de Dados, mais fácil será a “conversa” com o Gerenciador de Banco de Dados. Para isso, criou-se um modelo chamado Modelo de Entidades e Relacionamentos, do qual fazem parte três elementos: Entidades Entidades Relacionamentos Relacionamentos Atributos Atributos Existe Existe como como Tabelas Tabelas Colunas ou Tabelas Colunas Colunas (ou (ou Campos) Campos) numa numa Tabela Tabela Exemplos Exemplos Informação Informação de de um um cliente; cliente; informação informação de de um um pedido pedido Pedidos Pedidos de de um um cliente cliente Nome, Nome, Endereço, Endereço, Telefone Telefone do do cliente cliente a. Entidades Uma entidade é um objeto de interesse do qual podem ser colecionadas informações. Elas são representadas por tabelas. Exemplos: tabela de clientes; tabela de pedidos de clientes. b. Relacionamentos As entidades podem ser relacionadas entre si pelos relacionamentos. Por exemplo: relacionamento entre a entidade de clientes e a entidade de pedidos ( “clientes fazem pedidos”). c. Atributos Atributos são as características das entidades. São representadas pelas colunas das tabelas. Por exemplo: nome, endereço do cliente. 15 16 clientes identificador 1001 1002 1003 1004 1005 1006 nome endereço telefone João Alberto Franciso Maria Sônia Roberto ……. ……. …….. …….. ……... ………. 5554444 4687999 NULL 5678900 0988855 NULL ……... ~~~ ~~~ ~~~ ~~~ ~~~ Uma das colunas de uma tabela é uma primary key (chave primária). Isso indica para o gerenciador de banco de dados que uma coluna (ou um conjunto de colunas) deve ter um valor único para identificar a linha inteira. O gerenciador faz então o controle para que não entrem duas linhas com o mesmo valor na coluna que é primary key. A figura a seguir demonstra o relacionamento entre tabelas utilizando-se chaves primárias (PK) e estrangeiras (Foreign Key). clientes identificador nome ………. PK NN NN 1001 1002 1008 João Alberto. Wilson S….. S….. ……. …… NN …. …. …. ….. ……. ………….. NN 98022 98022 98026 NULL 05 Jun 1992 206-555-1212 07 Ago 1992 NULL 03 Mar 1993 Pedidos numero cliente PK PK,FK, NN 1 1 2 1002 1001 1001 produto NN 567 566 122 Pedidos se relacionam aos Clientes, através do campo cliente da tabela de pedidos. Esse campo é também denominado chave estrangeira (foreign key). Isso garante o que é denominado integridade referencial: ou seja, não pode haver inconsistência nas linhas que estão associadas nas tabelas. Por exemplo: o gerenciador não permite que clientes que tenham pedidos sejam removidos da tabela clientes, nem que pedidos sejam realizados por clientes inexistentes. Cada linha de nossa relação será chamada de TUPLA e cada coluna de nossa relação será chamada de ATRIBUTO. O conjunto de valores passíveis de serem assumidos por um atributo, será intitulado de DOMÍNIO. O domínio consiste de um grupo de valores atômicos a partir dos quais um ou mais atributos retiram seus valores reais. Assim sendo Rio de Janeiro, Paraná e Pará são estados válidos para o Brasil, enquanto que Corrientes não é um estado válido (pertence a Argentina e não ao Brasil). 16 17 O esquema de uma relação, nada mais é que os campos (colunas) existentes em uma tabela. Já a instância da relação consiste no conjunto de valores que cada atributo assume em um determinado instante. Portanto, os dados armazenados no Banco de Dados, são formados pelas instâncias das relações. As relações não podem ser duplicadas (não podem existir dois estados do Pará, no conjunto de estados brasileiros, por exemplo), a ordem de entrada de dados no Banco de Dados não deverá ter qualquer importância para as relações, no que concerne ao seu tratamento. Chamaremos de Chave Primária ao Atributo que definir um registro, dentre uma coleção de registros. Chave Secundária (Terciária, etc), serão chaves que possibilitarão pesquisas ou ordenações alternativas, ou seja, diferentes da ordem criada a partir da chave primária ou da ordenação natural (física) da tabela. Chamaremos de Chave Composta, aquela chave que contém mais de um atributo (Por exemplo um cadastro ordenado alfabeticamente por Estado, Cidade e Nome do Cliente, necessitaria de uma chave composta que contivesse estes três atributos). Chamaremos de Chave Estrangeira, aquela chave que permitir a ligação lógica entre uma tabela (onde ela se encontra) com outra na qual ele é chave primária. Exemplo: Cidade Estado * CidCodi * EstCodi CidNome EstNome EstCodi (E) CidCodi e EstCodi, são chaves primárias respectivamente das tabelas Cidade e Estado, enquanto EstCodi é chave estrangeira na tabela de cidades. É precisamente por este campo (atributo, ou coluna), que será estabelecida a relação entre as tabelas Cidade-->Estado. Obs.: Database Tabela Obs.: Integridade da entidade: Não se permite a nenhum atributo que participe da chave primária de uma relação que aceite o valor nulo; Integridade referencial: Não se permite alterar o valor da chave primária de uma relação, sem alterar o valor da chave externa de uma tabela relacionada. Como também não se pode inserir um registro em uma tabela relacionada, a menos que o registro se ligue ou se conecte a um registro da tabela primária. Bibliografia Projeto de Banco de Dados – Uma Visão Prática Felipe Machado; Maurício Abreu – Editora Érica 17