refinamento do modelo relacional

Propaganda
DISCIPLINA: MODELAGEM DA INFORMAÇÃO
CÓDIGO/CRÉDITOS/TURMA(S):
PROFESSOR: CLAUDIO SONALGIO ALBANO
ANO LETIVO/SEMESTRE: 2009 – SEGUNDO
II – EMENTA
Conceitos, importância e objetivos da modelagem de informações. Esquemas e mapeamentos. Linguagens
de definição, manipulação e consultas. Modelo relacional. Utilização de comandos básicos de linguagem
SQL. Recuperação, segurança e integridade.
III - OBJETIVO(S)
Ao final o aluno deverá ser capaz de identificar aspectos relevantes da armazenagem e recuperação de
informações. Desenvolver uma modelagem conceitual e lógica visando à construção de uma base de dados,
e utilizar uma ferramenta para a implementação do modelo.
IV – CONTEÚDO PROGRAMÁTICO
01.) MODELAGEM: Conceitos, importância e objetivos.
02.) BANCO DE DADOS: Sistemas, tipos e vantagens.
03.) MODELAGEM CONCEITUAL: Entidades e relacionamentos. Restrições e mapeamentos. Chaves.
Generalizações e agregações.
04.) CONSTRUÇÃO DE MODELOS DE BANCO DE DADOS: Criação base de dados, usuários, tabelas
e restrições.
05.) ARMAZENAMENTO E RECUPERAÇÃO DE INFORMAÇÕES: Comandos da Linguagem SQL.
V – METODOLOGIA
Aulas expositivo-dialogadas, seminários para apresentação de trabalhos, trabalhos em grupo com relatórios,
estudos de caso e apresentação de relatos de leituras.
TÉCNICAS
RECURSOS
Aulas expositivo-dialogadas
Apostila, slides, quadro e data-show.
Seminários para apresentação de trabalhos
Quadro, slides e data-show.
Trabalhos em grupo com relatórios
Artigos, textos de livros, revistas, jornais, internet
e filmes..
Estudos de caso
Textos de livros.
Apresentação relatórios de leituras
Artigos, textos de livros, revistas, jornais e
internet.
Visitas técnicas.
Visita a empresas, com atividades inerentes a
disciplina e curso.
VI – CRONOGRAMA DE ATIVIDADES
Modelagem.
1 aula – Apresentação do professor, disciplina e conteúdo. Conceitos de modelagem.
Banco de dados.
2 aula – Banco de dados: Sistemas, tipos e vantagens.
Modelagem Conceitual e Construção de Modelos de Banco de Dados.
3 aula – Entidades e relacionamentos.
4 aula – Restrições e mapeamentos, chaves.
5 aula – Exercícios de revisão de conteúdo e construção de um modelo simples.
6 aula – Exercícios práticos de implementação do modelo.
7 aula – Generalizações e agregações.
8 aula – Exercícios práticos de implementação do modelo.
9 aula – Prova.
10 aula – Comandos de armazenamento e recuperação de informações.
11 aula - Exercícios práticos de implementação do modelo.
12 aula – Recuperação de informações através de comando SQL.
13 aula – Construção de relatórios e exportação de informações com comandos SQL.
14 aula - Exercícios práticos com o modelo implementado.
15 aula - Exercícios práticos com o modelo implementado.
16 aula – Prova .
Recuperação.
17 aula – Atividades de recuperação.
VII – CRITÉRIOS DE AVALIAÇÃO
Assiduidade, pontualidade e participação em sala de aula.
Avaliação Diagnóstica: Não utilizada.
Avaliação Formativa: Trabalhos que visam identificar a assimilação de conteúdos considerados mais
importantes para a disciplina. Peso 3 ao final do semestre, para formar a média. O aluno deverá realizar
metade dos trabalhos, caso contrário não terá a nota dos trabalhos somada a média, ficando com ZERO
neste item. O professor avisará previamente quando da realização de trabalhos.
Avaliação Somativa: Uma avaliação (prova) por bimestre. Cada prova terá peso 3,5 ao final do semestre
para formar a média. O aluno que não realiza uma prova ficará com nota ZERO nesta prova.
Atividades de Recuperação devem ser previstas.
Ao final do semestre o aluno que não alcançar a média 6, poderá realizar uma atividade de recuperação
com todo o conteúdo do semestre. Com esta prova o aluno substituirá a menor nota de uma das provas, e
deverá ter nota suficiente para alcançar a média 6, somando a outra prova e a nota dos trabalhos.
VIII – REFERÊNCIAS BÁSICAS
Exemplares
Cougo, Paulo. Modelagem conceitual e projeto de Banco de dados. São Paulo. Editora
00
Campus. 2004.
BOOCH, Grady, JACOBSON, Ivar & RUMBAUGH James. UML Essencial. Um breve
00
guia para a linguagem-padrão de modelagem de objetos.
Exemplares
IX - REFERÊNCIAS COMPLEMENTARES
SETZER, V. W. Banco de Dados: Conceitos, modelos, gerenciadores, projeto lógico e
00
projeto físico. Editora Edgard Blucher. 1999. 2 Edição.
HEUSER, Carlos Alberto. Projeto de Banco de Dados. Editora Sagra-Luzzatto. Porto
00
Alegre. 2004. 2
MODELAGEM DE INFORMAÇÕES
No mundo real temos diversos objetos, cada objeto com sua função e características. Para que o
“mundo real” seja representado em sistemas informatizados, precisamos abstrair estas características e
funcionalidades de cada objeto.
Entretanto técnicas de modelagem não se aplicam única e exclusivamente a informática, podem ser
úteis para outras finalidades, para modelar processos, para área de organização e métodos, entre outras.
Devemos entender algumas premissas antes de iniciarmos o processo de modelagem, tais como:
como devemos modelar, por que devemos modelar, para que serve o modelo depois de modelado e o que
deve conter o modelo.
Para um correto processo de modelagem são necessários alguns procedimentos, tais como: observar,
elaborar conceitos, caracterizar, abstrair características, representar, definir e saber como manipular os
elementos ou objetos do mundo real.
Podemos perceber que modelar é um processo estruturado, pois devemos realizar uma série de
procedimentos, todos têm uma ordem e regras próprias.
Processo de modelagem
A obtenção de um modelo apartir de um conjunto de objetos observados deve considerar também
alguns quesitos, pela ordem estes quesitos devem ser:
Especificação dos requisitos => devemos definir a abrangência do trabalho, nível de detalhamento
desejado, tempo e recursos disponíveis.
Execução da modelagem => após as definições anteriores, devemos efetivamente começar o
processo de modelagem, para isto devemos observar os objetos, entender, representar, verificar a fidelidade e
coerência e finalmente validar nosso modelo..
Níveis de modelagem
Existem três níveis de modelagem, que são os seguintes:
Conceitual: quando os objetos, suas características e relacionamentos têm uma representação fiel ao
ambiente. Deve ser o modelo usado para o nível de conversação, entendimento, transmissão, validação de
conhecimentos e mapeamento do ambiente.
Lógico: quando os objetos têm suas características e relacionamentos representados de acordo com
as limitações impostas pela tecnologia a ser utilizada.
Físico: quando efetivamente implementamos o modelo em um SGBD.
01.) BANCO DE DADOS: Sistemas, tipos e vantagens.
SGBD (Sistema gerenciador de Banco de Dados).
Conceito (KORTH & SILBERSCHATZ) “é um conjunto de dados associados a um conjunto de programas
para acessar estes dados. O conjunto de dados, chamado banco de dados, contém informações sobre uma
empresa em particular. O principal objetivo de um SGBD é proporcionar um ambiente conveniente e
eficiente para o armazenamento e recuperação das informações”.
São projetados para manipular e gerenciar um grande volume de informações. Para poderem
realizar de forma eficaz estas tarefas, possuem mecanismos de definição das estruturas e de manipulação
destas informações (acesso, segurança, integridade, etc ...).
Atualmente, devido à importância das informações para as organizações, os SGBD,
assumem um papel de destaque no cenário tecnológico.
Objetivo de um SGBD:
“E proporcionar aos usuários uma visão abstrata dos dados. Isto é, o sistema esconde
determinados detalhes de como os dados são mantidos e como estão armazenados”.
Tipos de Gerenciadores de Banco de dados:
- Relacionais
- Orientados a objetos.
Vantagens:
Inconsistência e redundância de dados:
Uma informação pode aparecer (constar) duas ou mais vezes no sistema (em mais de um arquivo).
Dificuldade no acesso aos dados:
Facilidade para desenvolver novas consultas e relatórios.
Problemas de segurança:
Controlar acesso dos usuários as informações.
Acesso concorrente:
Dois ou mais usuários acessaram a mesma informação simultaneamente.
Problemas na Integridade:
Permitir que valores incorretos sejam armazenados na base de dados do sistema.
Problemas de atomicidade:
Garantir que toda uma transação seja efetuada.
Modelos de Banco de Dados (Alguns autores preferem “a visão”):
Um modelo de banco de dados é a descrição dos tipos de informações que estão armazenadas em um
banco de dados. Para construirmos um modelo de banco de dados, usamos uma linguagem de modelagem de
dados. A representação deste modelo é o esquema do banco de dados.
Modelo = descrição formal da estrutura de um banco de dados.
O modelo mostra qual o tipo de informação está armazenado, mas não quais as informações.
Modelo Conceitual: É a descrição do banco de dados de forma independente do SGBD.
Modelo Lógico: É a descrição do banco de dados no nível de abstração visto pelo usuário. Este
modelo é dependente do tipo de SGBD, utilizado.
03.) Modelagem Conceitual e Construção de Modelos de Banco de Dados.
ENTIDADE-RELACIONAMENTO
O modelo entidade-relacionamento (E-R) tem por base a percepção de que o mundo real é formando
por um conjunto de objetos chamados de entidades e pelo conjunto de relacionamentos entre esses objetos.
Conceitos Básicos
Existem três noções básicas empregadas pelo modelo E-R, que são as seguintes: Entidades,
relacionamentos e atributos.
Conjunto de Entidades.
Uma entidade é uma “coisa” ou “objeto” do mundo real, que pode identificada de forma unívoca em
relação a todos os outros objetos. Exemplo: Cada pessoa é uma entidade dentro de uma empresa.
Uma entidade tem um conjunto de propriedades, e os valores para algumas propriedades devem ser
únicos. Exemplo: Cada pessoa deve ter seu CPF, que deve ser um número único.
Então um conjunto de entidades é um conjunto que abrange entidades de mesmo tipo que
compartilham as mesmas propriedades, que são os atributos. Exemplo: O conjunto dos alunos da Unipampa
deve ser definido como o conjunto de entidades alunos.
Atributos: Uma entidade é representada por um conjunto de atributos. Atributos são propriedades
descritivas de cada membro de um conjunto de entidades. Isto quer dizer que o banco de dados mantém
informações similares de cada uma das entidades do conjunto entidades. Entretanto cada entidade pode (e
deverá) ter seu próprio valor em cada atributo. Para cada atributo existe um conjunto de valores possíveis, o
que chamamos de domínio, ou conjunto de valores do atributo. Exemplo: O domínio do atributo sexo do
aluno poderá ser M ou F, com um caractere.
Resumindo: Um banco de dados inclui uma coleção de conjuntos de entidades, cada qual contendo
um número de entidades de mesmo tipo. Cada entidade possui um conjunto de atributos.
Um atributo, por ser caracterizado pelos seguintes tipos:
Atributo Simples: Quando o atributo não é dividido. Exemplo: Sexo.
Atributo Composto: Quando atributo é dividido, ou pode ser uma união de diversos atributos.
Exemplos: Endereço, que pode ser composto de rua, número, bairro, cep, cidade, etc...
Atributo Mono-Valorado: Quando podem assumir apenas um valor. Exemplo: Número da matricula
do aluno.
Atributo Multivalorado: Quando podem assumir dois ou mais valores. Exemplo: Nome dos dependentes de
um funcionário de uma empresa. A multi-valoração pode ter limites ou não.
Atributos Nulos: Quando é possível um determinado atributo não ter valor. Exemplo: Nome do
cônjuge.
Atributos Derivados: Quando um atributo é derivado de outro atributo da mesma entidade ou de
outra entidade, e estão relacionados entre si. Exemplo: Número de disciplinas cursadas pelo aluno no
semestre.
RELACIONAMENTOS
Um relacionamento é uma associação entre duas ou mais entidades.
Também podemos dizer que um relacionamento é igual a um conjunto de associações entre
entidades.
Em um banco de dados normalmente temos relacionamentos binários (entre duas entidades), mas os
relacionamentos podem envolver mais de duas entidades, então estes são os relacionamentos ternários.
CARDINALIDADES
O mapeamento das cardinalidades expressa o número de entidades às quais outra entidade pode estar
associada por um conjunto de relacionamentos.
Podemos ter as seguintes cardinalidades:
Um para Um: Uma entidade em (A) está associada no máximo a uma entidade em (B) e vice-versa.
Um para muitos: Uma entidade em (A) está associada à várias entidades em (B), entretanto uma
entidade em (B) está associada no máximo a uma entidade em (A) .
Muitos para Um: Uma entidade em (A) está associada a uma entidade em (B), entretanto uma
entidade em (B) está associada à várias entidades em (A) .
Muitos para Muitos: Uma entidade em (A) está associada á várias entidades em (B) e vice-versa.
No projeto de um banco de dados uma propriedade importante de um relacionamento é o que
chamamos de cardinalidade.
Cardinalidade expressa o número (mínimo, máximo) de ocorrências de entidades associadas a uma
ocorrência da entidade em questão através do relacionamento.
IDENTIFICANDO ENTIDADES
Toda entidade deve possuir um identificador (chave).
Um identificador é um conjunto de um ou mais atributos, cujos valores servem para distinguir uma
entidade dentro do conjunto das entidades, ou seja, tornar esta entidade única.
Identificadores devem ser únicos, ou seja, não podem ser informações que possam existir em duas
entidades de um mesmo conjunto.
Exemplo: Nome, endereços e outros.
Exemplos de identificadores: Matricula do aluno, CPF, CGC e outros.
Exemplos de identificadores duplos: As placas de automóveis antigamente no Brasil, pois era preciso o
conjunto de letras, números e estado para identificar um automóvel.
Os atributos para identificaram uma entidade devem obedecer a duas premissas básicas:
Deve ser mínimo: Não devemos unir ou agrupar identificadores desnecessários, quando apenas um
identificador é suficiente para identificar uma entidade. Exemplo: Para identificar uma entidade aluno, basta
sua matricula, não é necessário unir matricula e carteira de identidade.
Deve ser único para cada entidade: Existem casos (algumas entidades) que mais de um atributo
poderia ser o identificador, mas o administrador do banco de dados deve escolher apenas um. Exemplo: Para
identificar uma empresa pode ser usado o CGC ou a inscrição estadual.
ENTIDADES DEPENDENTES
È quando uma entidade para existir, ou estiver presente no banco necessita de outra, sem a qual ela
não faz sentido. Exemplos: Funcionário e seus dependentes, pois os dependentes não representam nada para
o banco se não estiverem relacionados com os funcionários.
ENTIDADES FRACAS
È quando uma entidade, embora tenha atributos significativos, não possui nenhum atributo com
características de identificador da entidade ou que seja uma chave.
Exemplos: No sistema de folha de pagamento os valores correspondentes aos créditos e débitos mensais de
um funcionário, ou seja, seu extrato mensal de vencimentos.
IDENTIFICANDO RELACIONAMENTOS
Uma ocorrência de relacionamento geralmente diferencia-se das demais do mesmo relacionamento
por alguns atributos que dela participam e que são diferentes.
Exemplo: Relacionamento aluno – disciplina – professor.
Mas podem ocorrer casos, que este relacionamento se repita, se o aluno repetir a disciplina com o
mesmo professor?
Então será necessário criar um atributo para identificar este relacionamento no exemplo, poderia ser
o semestre.
Semestre seria então um atributo identificador de relacionamento.
GENERALIZAÇÃO E ESPECIALIZAÇÃO.
É possível desmembrar uma entidade genérica em entidades especializadas.
Aliado a estes conceitos de generalização ou especialização temos o conceito de herança de
propriedades, onde “herdar propriedades” significa que a entidade especializada possui além de suas
próprias características (atributos, relacionamentos, identificadores), também possui as características da
própria genérica.
A generalização/especialização pode ser classificada em dois tipos:
- Total: Quando para cada entidade genérica sempre haverá a ocorrência de uma entidade
especializada, ou seja, é obrigatória a existência da entidade especializada. No exemplo uma pessoa, sempre
é uma pessoa física ou jurídica.
- Parcial: Quando não é obrigatória a existência da entidade especializada, ou seja, podemos ter a
entidade geral, mas ter uma entidade especializada para esta entidade geral.
Não existem limites hierárquicos para generalização/especialização, ou seja, uma entidade pode ser
especializada em um nível, mas ser genérica de outro.
ENTIDADE ASSOCIATIVA OU AGREGAÇÃO
Um relacionamento é uma associação entre duas ou mais entidades.
Às vezes é necessário, ou desejável, criarmos um relacionamento que contenha informações.
Então temos que criar uma entidade (somente é possível guardar informações em entidades).
Então pode surgir uma dúvida, esta nova entidade estará relacionada com qual das entidades
que gerou o relacionamento, este fato não está previsto na abordagem E-R.
Para estes casos existe o conceito de abordagem associativa.
REPRESENTAÇÕES GRÁFICAS DE UMA DIAGRAMA E-R.
Entidade: Representa-se por um retângulo.
Relacionamento: Representa-se por um losango.
Relacionamento identificador: Representa-se por um losango, mas a linha que possui o
relacionamento identificador e mais grossa.
Atributo: Representa-se por uma linha com uma bola vazia na ponta.
Atributo identificador: Representa-se por uma linha com uma bola cheia na ponta (chave).
Generalização e especialização: Representamos por um triangulo.
Se for total, temos um t.
Se for parcial, temos um p.
Entidade associativa: Representamos por um losango dentro de um retângulo.
Entidade fraca: Representamos retângulo, que está ligado ao relacionamento com a entidade
forte com uma linha dupla.
IDENTIFICANDO CONSTRUÇÕES
Para podermos construir um modelo ER é necessário conhecer o contexto ou ambiente, no
qual está inserido este modelo. Normalmente um modelo ER, sofre modificações com o transcorrer
do tempo, em especial a medida que o modelador vai conhecendo melhor o contexto, ou seja, vai
desenvolvendo/construindo um aprendizado sobre a realidade, na qual será inserido o DER..
Entretanto existem alguns critérios que devem ser observados para a construção de DER.
- Atributo versus entidade relacionada:
Uma questão bastante comum na modelagem é quando devemos considerar um objeto uma
entidade ou um atributo.
Exemplos: Sexo de um aluno deve ser um atributo ou entidade.
Salário de um funcionário deve ser um atributo ou entidade.
Preço de venda de um produto deve ser atributo ou entidade.
Cor de um automóvel deve ser atributo ou entidade.
Estado civil de uma pessoa deve ser um atributo ou uma entidade.
Existem basicamente dois critérios para realizar esta modelagem:
01.) Se o objeto em questão estiver vinculado a outros objetos (relacionamentos, atributos,
etc..), devemos considera-lo como uma entidade;
02.) Aspectos temporais, ou seja, serão necessárias informações sobre a variação do valor
deste atributo com o transcorrer do tempo, então também devemos considera-lo uma entidade.
- Atributo versus generalização/especialização:
Quando devemos modelar um objeto como atributo ou como uma especialização. Devemos
ter a seguinte regra em mente:
Uma especialização deve ser usada, quando os objetos especializados possuem atributos que
os diferem dos demais objetos da mesma entidade.
- Atributos opcionais e monovalorados
Muitas vezes atributos são opcionais, ou seja, não é obrigatória sua presença na entidade.
Na modelagem devemos restringir a presença de atributos aos obrigatórios e
monovalorados.
CONSTRUINDO MODELOS
- Verificando e validando um modelo:
Um modelo, para se considerado válido e consistente deve obedecer a uma série de
requisitos, que podemos destacar como os seguintes:
01.) Deve ser completo: Para verificar esta qualidade do modelo, devemos ter uma pessoa
que tenha um perfeito conhecimento da realidade em questão, ou seja, da realidade modelada.
02.) Não ser redundante: Devem ser evitadas redundâncias de atributos, geralmente esta
redundância ocorre, quando criamos atributos que guardam valores resultantes de operações sobre
outros atributos ou outras entidades. Exemplo: Atributos com totais de alunos em uma disciplina na
entidade disciplina. Outra redundância é a ocorrência de relacionamentos redundantes.
03.) Aspecto Temporal: Quando estamos construindo um modelo DER, a preocupação
maior e que o modelo reflita uma realidade atual do sistema. Entretanto um banco de dados tende a
se modificar com o transcorrer do tempo, estas modificações podem ser em nível de atributos e
relacionamentos. Estas modificações podem ser em nível de inclusão de informações ou exclusão.
Não existem regras para seguirmos para realizar uma modelagem, entretanto algumas observações
podem ser seguidas e é claro um perfeito entendimento do sistema a ser modelado e suas
possibilidades de modificações com o transcorrer no tempo.
- Atributos que modificam os valores com o tempo: Alguns atributos podem ser
alterados com o tempo, em alguns casos já sabemos de antemão que isto irá acontecer, então
devemos considerar a possibilidade de modelarmos estes atributos como uma entidade. Exemplo:
Salário de um funcionário, nome de um cliente e outros.
- Relacionamento que modificam os valores com o tempo: Quando modelamos uma
empresa, normalmente alocamos um funcionário em uma filial (se a empresa tiver filiais), com o
transcorrer do tempo este funcionário poderá ser transferido para outra filial. Este é um exemplo de
relacionamento que se modificou com o transcorrer do tempo. Num primeiro momento era (1;1), ou
seja um empregado somente podia estar alocado a uma filial, mas com a modificação no sistema,
passou para (n:n), ou seja, aparecerá no relacionamento um empregado em duas filiais, então
devemos colocar o período que ele esteve em cada filial.
- Acesso a dados passados: Para evitar que o banco cresça indefinidamente, podemos
estabelecer critérios para a retirada de informações passadas do banco, entretanto devemos
pensar/estabelecer normas para que sejam efetuadas consultas a estas informações, neste caso
devemos verificar a estrutura do banco como um todo, ou seja, será possível voltar simplesmente as
informações para o banco? Outra forma é retirar estas informações do banco e armazena-las em
forma de dados estatísticos.
ESTRATÉGIAS DE MODELAGEM
O processo de construção de um modelo DER é incremental, ou seja, ele vai sendo
construindo conforme se toma conhecimento da realidade a ser modelada.
Normalmente muitas modificações acontecem durante a confecção de um modelo DER, pois
este vai sendo enriquecido gradativamente, conforme aumenta o conhecimento sobre o sistema,
sendo então necessárias mudanças em processos já definidos.
O processo de construção de um modelo DER, também é um processo de aprendizagem, que
conseqüentemente enriquece o construtor para futuros projetos.
Existem algumas propostas de modelagem de dados, mas nenhuma consegue obter uma
aceitação universal ou firmar-se tecnicamente como a melhor ou mais aceitável. Sendo esta escolha
muito mais uma questão empírica do construtor, de aprendizado ou de adequar-se a uma realidade
momentânea.
Conforme a fonte de informações (onde estão as informações para que possamos modelar o
sistema) podemos especificar duas estratégias de modelagem, que são as seguintes:
- Partindo de descrições de dados já existentes: Existem algumas situações em que esta
estratégia é mais adequada.
- Partindo do conhecimento de pessoas: Normalmente isto ocorre quando os sistemas não
estão informatizados ou possuem poucos documentos ou procedimentos formalizados.
ABORDAGEM RELACIONAL
Um banco de dados relacional é composto de tabelas ou relações. A terminologia tabela é mais
conhecida na prática (mercado profissional) já o termo relações é mais conhecido no meio acadêmico, por
isto a denominação “relacional”.
TABELAS
Uma tabela é um conjunto não ordenado de linhas (tuplas – acadêmico). Cada linha é composta de
uma série de campos (atributos – acadêmico). Cada campo é identificado por um nome. O conjunto de
campos das linhas de um tabela que possuem o mesmo nome formam uma coluna.
CHAVES
Para estabelecermos relações entre as tabelas (entre as linhas de tabelas) de um banco de dados
relacional é o da chave. Existem três tipos de chaves que devemos considerar:
CHAVE PRIMÁRIA. É uma coluna ou combinação de atributos, cujos valores distinguem
uma linha das demais linhas dentro de uma tabela. As chaves primárias podem ser compostas. Uma chave
primária deve ser mínima, ou seja, conter o menor número de atributos necessários.
CHAVE ESTRANGEIRA. É uma coluna ou combinação de atributos, cujos valores
aparecem necessariamente na chave primária de outra tabela. Através da chave estrangeira é que são
efetuados os relacionamentos em BD relacionais. A existência de uma chave estrangeira impõe as seguintes
restrições:
- Quando da inclusão de uma linha na tabela que contem a chave estrangeira, deve ser
garantido que este valor apareça (esteja presente) na tabela no qual é chave primária.
- Quando da alteração da chave estrangeira, deve ser garantido que o novo valor apareça
(esteja presente) na tabela no qual é chave primária.
- Quando da exclusão de uma linha da tabela que contém a chave primária referenciada em
uma tabela como estrangeira, devemos garantir que nesta tabela (onde esta chave era estrangeira) não mais
apareçam valores com esta chave estrangeira.
Uma chave estrangeira pode referenciar valores da mesma tabela.
CHAVE ALTERNATIVA. Em alguns casos mais de uma coluna (combinação de várias
colunas) podem distinguir uma linha de outra em uma tabela. Quando estas colunas não são
chaves primárias, então eles são chaves alternativas. Os valores das chaves alternativas podem ser
repetidos em uma tabela ou não.
DOMINIOS E VALORES VAZIOS
Quando uma tabela do banco é definida para cada coluna da tabela deve ser especificado um
conjunto de valores possível, isto chamamos de domínio do atributo.
Além disso, deve ser especificado se esta coluna poderá ficar “vazia” ou “nula”.
Normalmente todas as colunas que compõem a chave primária deve ser preenchidas para as demais
chaves não existe esta restrição.
RESTRIÇÕES DE INTEGRIDADE
Um dos objetivos primordiais de um SGBD é a integridade dos dados. Ao dizermos que as
informações/dados de um banco de dados são integras, significa dizer que elas refletem corretamente a
realidade apresentada pelo banco de dados e que são consistentes entre si.
Para tentar garantir esta integridade de um banco de dados os SGBD oferecem o mecanismo
de restrições de integridade.
- Integridade de domínio: Especificam que o valor de um campo deve obedecer a definição
de valores admitidos para a coluna (domínio da coluna ou do atributo). Nos SGBD é possível definir apenas
domínios pré-definidos. Exemplos: Datas, números inteiros, alfanumérico de tamanho definido, etc.... Não é
possível o usuário definir valores próprios de sua aplicação, tais como: Unidade da federação.
- Integridade de vazio: Especificar se o conteúdo de determinada coluna pode estar vazio ou
deve obrigatoriamente ser preenchido.
- Integridade de chave: Trata-se da restrição que define que os valores da chave primária e
alternativa ou alternada devem ser únicos.
- Integridade referencial: É a restrição que define que os valores dos que apareçam em uma
chave estrangeira devem aparecer na chave primária da tabela referenciada.
TRANSFORMAÇÕES ENTRE MODELOS
Dispomos de duas formas de modelagem; Modelagem ER e Modelagem Relacional.
Estas modelagens trabalham com os dados em níveis de abstração diferentes; a primeira modela os
dados de forma independente do SGBD no qual serão implementados e a nível conceitual, já a segunda
realiza a modelagem junto ao SGBD, que será utilizado e a nível lógico.
Projeto Lógico: Transformação (implementação) do modelo ER em modelo relacional.
Engenharia Reversa: É o contrário da primeira, é a transformação de um modelo lógico em modelo
ER (obter um diagrama ER, a partir de um SGBD, já implementado).
TRANSFORMAÇAO DE UM MODELO DER PARA RELACIONAL
Existem algumas regras para realizar esta transformação, esta regras foram definidas tendo em vista
basicamente dois pressupostos básicos:
São três basicamente as etapas necessárias para transformamos um modelo DER em um modelo
lógico (relacional): Tradução de entidades e respectivos atributos, tradução de relacionamentos e respectivos
atributos e tradução de generalizações e especializações.
1.) Tradução de entidades e respectivos atributos. Cada entidade é traduzida para uma tabela, onde
cada atributo será uma coluna desta tabela.
Os atributos identificadores correspondem às colunas que compõem a chave primária da tabela.
Exemplo: Tabela Aluno. Alunos (Matricula, Nome, Endreço, Telefone, DataNasc, Sexo,)
1.1.) Nome de atributos e nomes de colunas.
Não é aconselhável simplesmente transcrever os
nomes dos atributos para os nomes de colunas. Devemos procurar criar padrões de nomes de colunas em um
SGBD.
1.2.) Relacionamento Identificador.
Podem existir situações que não é trivial, quando acontece
de uma entidade ter um relacionamento identificador. Exemplo: Entidade dependente de funcionário em um
sistema de folha de pagamento.
Para um dependente ser identificado pelo sistema ele necessita estar vinculado ao
funcionário do qual ele é dependente e ainda ter um atributo que o identifique entre os demais
dependentes deste funcionário.
Existe uma regra de tradução para estes casos, que indica que devemos ter uma coluna na tabela para
cada identificador externo (identificador do funcionário). Esta coluna deverá fazer parte da chave primária da
tabela, no exemplo, fará parte da chave primária da tabela dependente.
Uma tabela que possui identificadores externos em sua chave primária, é possível ter identificador
externo de diversas tabelas.
Exemplo: Dependentes de um empregado, que faz parte uma empresa com diversas filiais. Teremos
uma chave primária composta de diversos atributos, inclusive de outras entidades (mais de uma).
Unidade (CodUnid, Nome, Localização)
Empregado (CodUnid, Matricula, Nome, DataAdm, Salário, Função)
Dependente (CodUnid, Matricula, CodDep, Nome, Vinculo, Sexo, DataNas)
2.) Tradução de relacionamento e respectivos atributos.
O fator determinante para a tradução (implantação) de relacionamentos é o da cardinalidade mínima
e máxima entre as entidades, que compõem o relacionamento.
2.1.) Existem três formas básicas de tradução de relacionamentos, que são as seguintes:
2.1.1.) Tabela própria.
O relacionamento é implementado através de uma tabela, que contem o seguinte:
Colunas com os atributos que identificam as entidades que participam do relacionamento.
Colunas com os demais atributos do relacionamento (atributos inerentes ao relacionamento).
A chave primária desta tabela é o conjunto das colunas que identificam as entidades que participam
do relacionamento. Os atributos que formam estas colunas, devem ser chaves primárias em suas respectivas
tabelas, e serão chaves estrangeiras nos relacionamentos.
Exemplo: Aluno e Disciplina.
Tabela Aluno. Alunos (Matricula, Nome, Endreço, Telefone, DataNasc, Sexo,)
Tabela Disciplina. Disciplinas (CodDisc, Nome, Créditos, Semestre)
Tabela Cursa. Cursa (Matricula, CodDisc, Notas, Freqüência, Resultado, Observações)
2.1.2.) Colunas adicionais dentro da tabela de entidades.
Outra alternativa de implementação de relacionamentos é a inserção de colunas em uma
tabela correspondente a uma das entidades que participam do relacionamento.
Entretanto isto somente é possível quando uma das entidades (tabelas) que participa do
relacionamento tem cardinalidade máxima um.
Para isto devemos inserir na tabela mestre (podemos assim chamar) as colunas que
identificam a segunda tabela. Estas colunas serão chaves estrangeiras na tabela “ mestre” e chave
primária na outra tabela.
Exemplo: Relacionamento Produto X Grupo.
Tabela Grupos. Grupo (CodGru, Nome, Observações)
Tabela Produtos. Produtos (CodBarr, Descrição, Unidade, Pvenda, Qestoq, CodGru)
2.1.3.) Fusão de tabelas de entidades.
Esta forma prevê a fusão das tabelas envolvidas no relacionamento. Entretanto isto somente
pode ser aplicado quando o relacionamento é de (1:1).
Exemplo: Relacionamento de um casamento (sendo único para toda a vida), sem
possibilidade de separação. Marido X Esposa.
Tabela Casamento. Casamento (Certidão, CIMar, CIEsp, Data, Local, Regime)
2.2.) Detalhes da implementação de relacionamentos.
A cardinalidade de um relacionamento determina, como deve ser a sua implementação.
Tipos de Relacionamento
Tabela Própria
Regras para implementação
Adição de Coluna
Fusão de Tabelas
2.2.1.1 (0,1)
2.2.1.2 (0,1)
2.2.1.3 (1,1)
(0,1)
(1,1)
(1,1)
2.2.2 (0,1)
2.2.2 (0,1)
2.2.2 (1,1)
2.2.2 (1,1)
(0,N)
(1,N)
(0,N)
(1,N)
2.2.3 (0,N)
2.2.3 (0,N)
2.2.3 (1,N)
(0,N)
(1,N)
(1,N)
Relacionamentos (1:1)
Pode ser usada
Preferir
Não usar
Pode ser usada
Não usar
Pode ser usada
Relacionamentos (1:N)
Pode ser usada
Preferir
Pode ser usada
Preferir
Não usar
Preferir
Não usar
Preferir
Relacionamentos (N:N)
Preferir
Não usar
Preferir
Não usar
Preferir
Não usar
Não usar
Preferir
Preferir
Não usar
Não usar
Não usar
Não usar
Não usar
Não usar
Não usar
Estas regras visam evitar junções e diminuir o número de chaves primárias.
2.2.1.) Relacionamentos (1:1).
2.2.1.1.) Quando ambas as entidades tem participação opcional.
Entidade Homem com os seguintes atributos: Identidade e nome.
Entidade Mulher com os seguintes atributos: Identidade e nome.
Para modelar a união (casamento) entre homem e mulher, sendo que casamento deve carregar os
atributos data, local e regime de comunhão de bens.
A melhor alternativa é a adição de colunas (com os atributos de casamento) a uma das entidades
(Homem ou mulher). A implementação seria expressa da seguinte forma:
Mulher (IdentM, Nome, IdentH, Data, Regime, Local)
IdentH referencia Homem
Homem (IdentH, Nome)
Outra alternativa seria gera uma tabela própria para casamento, expressa da seguinte forma:
Homem (IdentH, Nome)
Mulher (IdentM, Nome)
Casamento (IdentM, IdentH, Data, Regime, Local)
IdentH referencia Homem
IdentM referencia Mulher
A desvantagem da primeira opção é a existência de atributos, que podem ser nulos na entidade
Mulher, caso esta não seja casada. Esta é uma restrição que geralmente não é controlada pelo banco de
dados, ficando sob a responsabilidade do desenvolvedor.
2.2.1.2.) Quando uma entidade tem participação opcional e outra tem participação
obrigatória.
Entidade Correntista com os seguintes atributos: Identidade e nome.
Entidade Empréstimo com os seguintes atributos: Número, valor, vencimento e pagamento.
A melhor alternativa é a fusão de tabelas, que seria expressa da seguinte forma:
Correntista (Identidade, Nome, NroEmprest, valor, vencimento, pagamento)
A segunda alternativa seria a adição de colunas à tabela que pode ter cardinalidade mínima (zero).
Correntista (IdentCor, Nome)
Empréstimo (Número, valor, vencimento, pagamento, IdentCor)
IdentCor referencia Correntista
2.2.1.3.) Quando ambas as entidades tem participação obrigatória.
Entidade Comissão Organizadora com os seguintes atributos: Nome e endereço.
Entidade Conferência com os seguintes atributos: Código, data e assunto.
A melhor alternativa é a fusão de tabelas, que seria expressa da seguinte forma:
Conferência (Código, data, assunto, NomeComis, EnderComis)
2.2.2.) Relacionamentos (1:N).
Nesta situação a alternativa preferia é a adição de colunas.
A implementação com tabela própria tem duas desvantagens em relação à implementação por adição
de colunas, que são as seguintes:
- Favorecem a formação de junções em rotinas de pesquisas (consultas, relatórios e outras)
- Podem favorecer o surgimento de chaves primárias iguais.
Exemplos:
01.) Entidade Edifício, com os seguintes atributos: Código, nome e endereço
Entidade Apartamento, com os seguintes atributos: Número, proprietário e área construida.
A melhor alternativa é a adição de colunas, que seria expressa da seguinte forma:
Edifício (CodEdif, Nome, Endereço)
Apartamento (NroApt, CodEdif, proprietário, area)
CodEdif referencia Edifício
02.) Entidade Financeira, com os seguintes atributos: Código e nome.
Entidade venda, com os seguintes atributos: Número, data, valor, parcelas e juros.
A melhor alternativa é a adição de colunas, que seria expressa da seguinte forma:
Financeira (CodFinan, Nome)
Vendas (NroVenda, data, valor, parcelas, juros, CodFinan)
CodFinan referencia Financeira
A alternativa através de tabela própria seria expressa da seguinte forma:
Financeira (CodFinan, Nome)
Vendas (NroVenda, data, valor, parcelas, juros)
Financiamento (NroVenda, CodFinan)
NroVenda referencia Vendas
CodFinan referencia Financeira
* Aparecem duas chaves primárias iguais.
2.2.3.) Relacionamentos (N:N).
Nesta situação a alternativa preferia é a adoção de uma tabela própria, pois uma entidade pode estar
associada a diversas outras, desta forma fica inviável a adição de tabelas ou fusão de colunas.
Exemplo: Relação entre aluno e disciplina.
Disciplina (CódDisc, nome, créditos,)
Aluno (MatAlu, nome)
Cursa (MatAlu, CodDisc, semestre)
MatAlu referencia Aluno
CodDisc referencia Disciplina
2.3.) Relacionamentos com mais de duas entidades.
As regras até aqui apresentadas, aplicam-se somente a relacionamentos com duas entidades
(relacionamentos binários). Para relacionamentos com mais de duas entidades, devemos aplicar a
seguintes regra:
- O relacionamento é transformado em uma entidade, que é ligada através de um
relacionamento binário a cada uma das entidades que participavam do relacionamento original.
Exemplo:
Entidade cidade, com os seguintes atributos: Código e nome.
Entidade produto, com os seguintes atributos: Código, nome e preço venda.
Entidade distribuidor, com os seguintes atributos: Identidade e nome.
Cidade (CódCida, nome)
Produto (CodProd. Nome, pvenda)
Distribuidor (IdentDis, nome)
Distribuição (CodProd, IdentDist, CodCida, quantidade)
CodProd referencia produto
IdentDist referencia distribuidor
CodCida referencia cidade
2.4.) Implementação de generalização e especialização.
Existem duas opções para a implementação de generalização/especialização:
2.4.1.) Uma tabela por hierarquia:
Todas as tabelas referentes às especializações de uma entidade genérica são fundidas em uma única
tabela. Que será composta de:
- Chave primária correspondente ao identificador da entidade genérica.
- Caso não exista, devemos criar uma coluna Tipo, que identifique que tipo de entidade especializada
está sendo representada por cada linha da tabela.
- Uma coluna para cada atributo da entidade genérica.
- Colunas referentes aos relacionamentos dos quais participa a entidade genérica e que sejam
implementados através da alternativa de adicionar colunas à tabela da entidade genérica.
- Uma coluna para cada atributo de cada entidade especializada (estas colunas devem ser definidas
como opcionais, já que somente serão preenchidas quando a linha for referente a entidade especializada).
- Colunas referentes aos relacionamentos dos quais participa cada entidade especializada e que sejam
implementados através da alternativa de adicionar colunas à tabela da entidade (estas colunas devem ser
definidas como opcionais, já que somente serão preenchidas quando a linha for referente a entidade
especializada).
Exemplo: Empregado (entidade genérica) que está lotado em um departamento e que pode ter as
especializações:
Secretária: Que deve especificar que língua domina.
Motorista: Que deve conter a carteira de habilitação.
Engenheiro: Que deve ter o ramo da engenharia e de quais projetos participa.
Tabela Empregado, além de suas especializações, contém as seguintes colunas:
- CodEmp, chave primária da tabela.
- Colunas nome, CPF, CI e tipo referente a entidade especializada.
- Coluna CodDepto, que relaciona com o departamento (relacionamento lotação).
- Coluna Carthabil que compõem (implementa) a entidade especializada motorista.
- Coluna CREA, que compõem (implementa) a entidade especializada engenheiro.
- Coluna CodRamo, que implementa o relacionamento entre Engenheiro e o ramo da engenharia.
- Relacionamento particicpa, que informa de qual o projeto participa o engenheiro.
Pelas regras apresentadas no item 2.2, os relacionamentos (lotação e participa) são implementados
com tabela própria.
A entidade secretária não gera nenhuma coluna, visto que não possui atributos nem participa de
relacionamentos que gerem colunas.
Esquema relacional para a implementação:
Empregado (CodEmp, nome, cpf, ci, tipo, CodDepto, CartHabil, CREA, CodRamo)
CodDepto referencia Departamento
CodRamo referencia Ramo
Departamento (CodDepto, nome)
Ramo (CodRamo, nome)
Processador (CodProc, nome)
Domínio (CodEmp, Codproc)
CodProc referencia Processador
CodEmp referencia Empregado
Projeto (CodProj, nome)
Participa (CodEmp, CodProj)
CodEmp referencia Empregado
Codproj referencia Projeto
2.4.2.) Uma tabela por Entidade Especializada:
Uma segunda possibilidade é criarmos uma tabela para cada entidade que compõem a hierarquia.
Devemos incluir nas entidades especializadas o atributo correspondente a chave primária da tabela
genérica.
Utilizando-se do exemplo anterior, a implementação seria da seguinte forma:
Criamos uma tabela para a entidade Empregado e cada uma de suas especializações. Todas tem a
mesma chave primária. Na tabela empregado temos todas as informações referentes ao empregado. As
informações em particular de cada empregado (motorista e engenheiro), estarão em tabelas próprias
conforme o tipo.
Esquema relacional para a implementação:
Empregado (CodEmp, nome, cpf, ci, tipo, CodDepto)
CodDepto referencia Departamento
Motorista (CodEmp, CartHabil, Vencto)
CodEmp referencia Empregado
Engenheiro (CodEmp, CREA, CodRamo)
CodEmp referencia Empregado
CodRamo referencia Ramo
Departamento (CodDepto, nome)
Ramo (CodRamo, nome)
Processador (CodProc, nome)
Domínio (CodEmp, Codproc)
CodProc referencia Processador
CodEmp referencia Empregado
Projeto (CodProj, nome)
Participa (CodEmp, CodProj)
CodEmp referencia Empregado
Codproj referencia Projeto
REFINAMENTO DO MODELO RELACIONAL
Em todo o processo existe um compromisso entre o ideal e o que é possível realizarmos dentro de
determinadas circunstâncias. Na implementação de um banco de dados, também é necessário termos esta
relação/comparação. Existem as regras de implemtanção até aqui apresentadas, que devem ser
consideradas sempre que possível e respeitadas integralmente, a menos que seja extremamente importante
por uma questão de performance do banco (s0ftware) implementarmos soluções que violem as mesmas.
Existem algumas situações nas quais podemos “violentar” as regras até aqui apresentadas:
01.) Relacionamento mutuamente exclusivo. Acontece quando uma entidade participa de
forma mutuamente exclusiva de um ou outro relacionamento.
02.) Atributos Multivalorados (Simular). Acontece quando uma entidade necessita de
atributos multivalorados, estes podem ser limitados. Estes atributos jamais sofrerão uma indexação/seleção
em pesquisas.
03.) Informações Redundantes. Informações redundantes são aquelas que podem ser obtidas
através de outras informações da mesma entidade ou de outras entidades existentes no banco. As regras de
implementação não recomendam a criação de atributos para estas informações, mas em alguns casos é
conveniente criarmos um atributo para armazenar estas informações.
ENGENHARIA REVERSA - NORMALIZAÇÃO
Dependência funcional:
Entende-se por dependência funcional, quando uma coluna (de uma tabela), depende funcionalmente
de outra coluna da mesma tabela (que faz parte da chave primária). Outra forma de expressarmos
conceitualmente dependência funcional é dizermos que sempre que uma coluna X, apresentar um valor,
obrigatoriamente outra(s) coluna(s), terão tambem um valor constante, ou seja, a coluna X determina o valor
das outras.
Dependência transitiva:
Entende-se por dependência funcional, quando uma coluna (de uma tabela), depende funcionalmente
de outra coluna da mesma tabela (que não faz parte da chave primária). Outra forma de expressarmos esta
dependência é dizermos que sempre que uma coluna X, apresentar um valor, obrigatoriamente outra(s)
coluna(s), terão tambem um valor constante, ou seja, a coluna X determina o valor das outras.
Dependência funcional multivalorada:
Entende-se por dependência funcional multivalorada, quando uma coluna (de uma tabela), depende
multivaloradamente de outras.
Procedimentos para a normalização:
Existem quatro regras para que possamos completar o processo de normalização, são as chamadas 4
regras normais.
Antes de aplicarmos estas regras normais, devemos desenvolver o esquema relacional. Descreve-se
as informações, como uma entidade única. Representa-se todas as informações como se fossemos
implementar um a entidade em um banco de dados relacional.
Vamos trabalhar com os dados de um pedido de compra, com os seguintes dados:
EMPRESA DE VENDAS X-Y
Pedido Número: 987654
Data Pedido: 02/06/2002
Data Entrega: 15/06/2002
Cliente: 101.882.851-23 Urcamp-Livramento
Endereço: Estrada da educação, 987 Km 125.
Cidade: Livramento
Bairro: Palomas
Cep: 96400-900
Unid.Federação: RS
Código
Descrição
Quantidade
Valor Unitário
Valor Total
1234
Caixa de Giz
1500
1,50
1.500,00
9876
Apagadores
200
2,00
400,00
9632
Canetas
300
0,50
150,00
Total Geral
2.050,00
01.) Primeira formal normal.
Uma tabela/entidade está na primeira formal normal quando ela não contém tabelas aninhadas.
Devemos construir uma tabela para cada tabela (dados) aninhados.
Nesta etapa já devemos selecionar, ou indicar, as chaves primárias e manter a vinculação (ligação)
entre as tabelas, no caso na tabela produtos vincular o número do pedido.
02.) Segunda formal normal.
Devemos compreender o conceito de dependência funcional (ou parcial – de parte da chave
primária), para realizarmos esta regra.
2.1.) Copiar para a segunda forma normal, toda tabela que contenha apenas uma chave primária
simples ou que não contenha colunas além da chave primária.
2.2.) Para as tabelas com chaves primárias compostas e com outras colunas não chaves.
- Para cada coluna não chave, verificar a sua dependência funcional, ou seja, verificar se ela depende
de todas a chave primária ou apenas de parte dela.
- Criar tabelas, conforme a dependência da coluna.
03.) Terceira formal normal.
Devemos compreender o conceito de dependência transitiva para realizarmos esta regra.
Nesta regra devemos eliminar as dependências transitivas, criando tabelas conforme a necessidade.
04.) Quarta forma normal.
Eliminar as dependências funcionais multivaloradas.
Problemas da Normalização:
- Chaves primárias omitidas ou incorretas;
- Atributos relevantes implicitamente representados.
- Atributos redundantes;
Download