Buscar

BANCO_DE_DADOS_-_CAP._2_PARTE_II_

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

43
Linguagem de Programação
como simplificação do modelo não será necessário armazenar os 5. 
horários de atendimento semanal para cada médico. Considerare-
mos apenas que todos os médicos atendem todos os dias úteis da 
semana em um horário fixo e igual para todos.
Note que Consulta é uma relação gerada a partir de um relacionamento 
ternário entre as entidades Médico, Paciente e Plano_Saúde.
2.1.3. Generalização / especialização de entidades
Existem situações em que diferentes entidades apresentam algumas ca-
racterísticas em comum, divergindo apenas em algumas outras poucas 
características. Na Figura 21, por exemplo, temos duas entidades nessa 
condição de semelhança: Médico e Paciente.
 Figura 21 – Entidades com Atributos em Comum
Essas entidades foram extraídas do exemplo de diagrama ER da Figura 
21. Repare que ambas apresentam 4 atributos em comum: nome, sexo, 
telefone e celular. Médico ainda possui dois atributos exclusivos: CRM 
e e-mail. Por sua vez, a entidade Paciente apresenta um único atributo 
somente seu: Id_Paciente.
Nesse e em casos semelhantes podemos lançar mão de um recurso pre-
visto na modelagem de dados, conhecido como generalização. Então, 
uma nova entidade, mais genérica – ou se preferir, menos especializada 
– deve ser criada para agregar os atributos comuns.
Na Figura 22 temos uma entidade de nome Pessoa que assume esse papel de 
entidade menos especializada. Essa nova entidade chama para si os atribu-
tos comuns das entidades mais especializadas: Médico e Paciente. O símbolo 
triangular que interliga essas entidades indica que os atributos de Pessoa são 
compartilhados por Médico e Paciente, ou seja, Médico e Paciente herdam os 
atributos de Pessoa. Entretanto, o atributo de Id_Paciente pertence somente a 
Paciente; e CRM e E_Mail são atributos exclusivos de Médico.
Médico
CRM
Nome
Sexo
Telefone
Celular
E_Mail
Paciente
Id_Paciente
Nome
Sexo
Telefone
Celular
Modelagem de Dados
44
Técnico em Informática
Figura 22 – Exemplo de Generalização / Especialização
Generalização: entidades de um nível mais baixo de abstração, 
com características comuns; são agrupadas, dando origem a uma 
entidade de nível mais alto.
Especialização: uma entidade de nível mais alto de abstração é 
desmembrada em várias entidades de nível mais baixo, com ca-
racterísticas parcialmente distintas.
Atividade 12
Construa um diagrama ER completo para um sistema de super-
mercado que permita as seguintes funcionalidades:
(1) Manter informações sobre produtos (código, nome, preço uni-
tário, quantidade em estoque e estoque mínimo);
(2) Registrar vendas de produtos nos caixas;
(3) Registrar recebimentos – discriminando o tipo: em dinheiro, 
cheque, cartão de débito, ou cartão de crédito.
Pessoa
Nome
Sexo
Telefone
Celular
Paciente
Id_Paciente
Médico
CRM
E_Mail
Capítulo 2 
45
Linguagem de Programação
2.1.4 Entidades fracas
Uma entidade fraca é qualquer entidade cuja existência no modelo ER 
não se justiça por si mesma. Essa entidade surge apenas em razão do 
relacionamento desta com uma outra entidade, considerada forte. A 
chamada entidade fraca deve apresentar identificadores compostos 
(formados pelo menos por dois atributos). Um desses atributos deve 
ser originário da entidade forte. Ele é replicado na entidade fraca para 
estabelecer uma ligação entre ocorrências das duas entidades.
Um exemplo clássico de entidade fraca é demonstrado na Figura 23. 
Dependente é a entidade fraca, pois a identificação de um dependente 
é impossível sem a identificação do sócio. Na verdade, os dependentes 
não existiriam se não houvesse os sócios.
Figura 23 – Exemplo de Entidade Fraca (Dependente)
2.2 Modelo relacional normalizado
O Modelo Entidade-Relacionamento (MER) constitui apenas a pri-
meira etapa da chamada modelagem de dados para a implementação 
de um banco de dados que poderá ser parte de um sistema de banco de 
dados. Desenvolvido pelo analista de sistemas, o MER é considerado 
um modelo conceitual do banco de dados em implementação. Como 
afirmado anteriormente, o MER pode ser elaborado antes mesmo da 
definição do Sistema Gerenciador de Banco de Dados (SGBD) em que 
a solução será implementada. A única restrição imposta pelo modelo 
ER é a escolha de um SGBD também relacional.
Uma vez concluída esta etapa, a equipe de analistas de sistemas deve ocu-
par-se do projeto lógico do banco de dados, também conhecido como 
1 N
Sócio
Id_Sócio
Nome
Sexo
Endereço
Telefone
CPF
RG
Data_Nascimento
Id_Sócio
Id_Dependente
Nome
Sexo
Data_Nascimento
Dependente
Modelagem de Dados
46
Técnico em Informática
o Modelo Relacional Normalizado (MRN). Nessa fase o projetista deixa 
de ocupar-se exclusivamente com os requisitos levantados junto ao usuá-
rio demandante do banco de dados. Não que esteja autorizado a ignorar 
as necessidades e desejos do usuário e possa, a partir de agora, impor di-
tatorialmente a sua própria vontade. Em momento algum os requisitos do 
usuário-final devem ser ignorados. Ao ocupar-se com o MRN, o analista 
de sistemas deve também preocupar-se com a forma de armazenamento 
das informações em um banco de dados relacional.
Na elaboração do modelo conceitual do banco de dados (o modelo ER), 
ignoramos alguns importantes conceitos que, agora, durante o modelo 
lógico, não podemos mais deixar de considerar. O mais básico desses con-
ceitos e nosso ponto de partida nesta etapa é a chamada chave primária.
2.2.1 Chave primária
Em bancos de dados relacionais as informações são armazenadas em ta-
belas, sendo essencialmente organizadas em linhas e colunas. Cada linha 
de uma tabela corresponde a uma ocorrência da informação. Assim, em 
uma tabela de alunos (Figura 24), cada linha (ou registro) corresponde ao 
conjunto de informações inter-relacionadas de um aluno em particular. 
As colunas (ou campos) correspondem a subdivisões lógicas ou compar-
timentos para diferentes informações contidas em uma mesma linha.
Na tabela Aluno da Figura 24, cada linha foi subdividida em 5 colunas 
(Matrícula, Nome, Sexo, Nascimento e Curso). No exemplo apresenta-
do existem 6 linhas armazenando as informações de 6 diferentes alunos 
de uma instituição de ensino. Os dados armazenados nas colunas de 
uma mesma linha são relativos a um mesmo aluno. Assim, podemos 
afirmar que o aluno de nome Rodrigo Bívar tem matrícula 1099, é do 
sexo masculino, nasceu em 25 de dezembro de 1992 e cursa informática. 
Também podemos confirmar que a aluna Karina Gonçalves encontra-se 
matriculada no curso de Biologia com a matrícula 1203.
Figura 24 – Tabela Aluno
Aluno
Matrícula Nome Sexo Nascimento Curso
1099 Rodrigo Bívar M 25/12/1992 Informática
1100 Ximene Lascasas F 13/09/1996 Informática
1203 Karina Gonçalves F 03/11/1998 Biologia
1399 José da Silva M 27/02/1995 Matemática
1500 Cesário Antunes M 16/12/1999 Farmácia
1701 José da Silva M 03/10/1991 Informática
Capítulo 2 
47
Linguagem de Programação
Uma tabela como essa pode armazenar centenas ou milhares de linhas (re-
gistros). Imaginar a complexidade da tarefa de localizar um registro espe-
cífico em meio a milhares de outros na mesma tabela é algo que não exige 
muito esforço. Uma ou mais colunas podem servir para identificar uma li-
nha em específico, distinguindo-a de todas as demais linhas existentes.
Supondo que desejamos acessar os dados de um aluno em específico, a 
busca pela linha que armazena esses dados deve ser parametrizada pelo 
valor de uma ou mais colunas, mas não de qualquer coluna. Afinal, di-
ferentes alunos podem, por exemplo, ter o mesmo nome. Na Figura 24, 
essa situação encontra-se exemplificada nas linhas 4 e 6 da tabela, onde 
estão registrados dois alunos de nome José da Silva. A possibilidade de 
ocorrência de alunos homônimos desqualifica a coluna nome como uma 
colunaadequada para a identificação de um registro em particular.
A Figura 25 mostra o resultado de uma busca na tabela Aluno com o 
critério de pesquisa Nome = “José da Silva”. O fato dessa busca/con-
sulta resultar na apresentação de mais de uma linha evidencia a inade-
quação da coluna Nome na identificação de uma linha em particular. 
Embora com mesmo nome, os alunos são pessoas diferentes, com datas 
de nascimento distintas.
Figura 25 – Resultado da Busca por Aluno de Nome = “José da Silva”
Por outro lado, a utilização da coluna Matrícula como critério de pes-
quisa mostra-se perfeitamente adequada para a identificação de uma 
única linha. Afinal, não podem existir dois alunos com um mesmo nú-
mero de matrícula. A Figura 26 exemplifica o resultado de uma busca 
utilizando a coluna Matrícula como critério de pesquisa.
Figura 26 – Resultado da Busca por Aluno de Matrícula = 1701
 
Matrícula Nome Sexo Nascimento Curso
1399 José da Silva M 27/02/1995 Matemática
1701 José da Silva M 03/10/1991 Informática
 
Matrícula Nome Sexo Nascimento Curso
M1701 José da Silva 03/10/1991 Informática
Modelagem de Dados
48
Técnico em Informática
Ao conjunto de um ou mais atributos que permite identificar 
com precisão uma única linha de uma tabela dá-se o nome de 
superchave.
Na Figura 27 é apresentada a entidade Funcionário dotada de 12 atri-
butos. Destes, podemos selecionar algumas superchaves: Carteira_
Identidade é certamente uma superchave, pois não deve existir mais 
de um funcionário com o mesmo número da carteira de identidade. 
Entretanto, essa não é a única superchave. CPF também pode ser 
considerado uma superchave, assim como a combinação de atributos 
{Nome e Carteira_Identidade}, ou {Nome e CPF}, ou ainda {Nome, 
Carteira_Identidade e CPF}.
Figura 27 – Atributos da Entidade Funcionário
Como destacado anteriormente, o atributo Nome isoladamente não 
pode ser considerado uma superchave. Porém, sua combinação com 
outros atributos pode formar superchaves. É o caso da combinação 
{Nome, Logradouro}.
Nome
Sexo
Data_Nascimento
Carteira_Identidade
CPF
Logradouro
Complemento
Bairro
Cidade
UF
CEP
Telefone
Funcionário
Capítulo 2 
49
Linguagem de Programação
Chaves candidatas são um subconjunto específico das chamadas 
superchaves. Somente podem ser chaves candidatas as chamadas 
superchaves mínimas.
Ou seja, uma superchave formada pela combinação de mais de 
um atributo pode ser classificada como uma chave candidata 
apenas se essa combinação não possuir qualquer subconjunto 
próprio que seja ele mesmo uma superchave. Veja o exemplo do 
CPF a seguir.
Portanto, a combinação de atributos {Nome, CPF}, apesar de ser super-
chave, não pode ser uma chave candidata, pois {CPF} também é super-
chave e subconjunto da combinação. O mesmo vale para a combinação 
{Carteira_Identidade, CPF, Nome}, que não é chave candidata, pois 
existem inúmeros subconjuntos que são superchaves.
A entidade Funcionário possui várias chaves candidatas: {CPF}, {Car-
teira_Identidade} e {Nome, Logradouro}.
Chave primária é uma chave candidata escolhida pelo projetista 
de banco de dados. Ela é o principal meio de identificação unívoca 
de uma linha em uma entidade.
Toda chave primária obedece às seguintes regras:
(1) Não pode conter valor nulo (a chave primária é de preenchi-
mento obrigatório. Não pode ser omitida);
(2) Não pode conter valores duplicados (não pode existir na enti-
dade mais de uma linha com o mesmo valor de chave primária).
A Figura 28 mostra as entidades e relações do sistema de marca-
ção de consultas com suas respectivas chaves primárias. Observe 
que a distinção na representação gráfica entre entidades e relações 
desapareceu. De fato, no Modelo Relacional Normalizado (MRN) 
as relações deixam de ser representadas por linhas tracejadas e são 
tratadas como as entidades.
Modelagem de Dados
50
Técnico em Informática
Figura 28– Chaves Primárias nas Entidades do Sistema de Marcação de Consultas
Graficamente, as chaves primárias são representadas em uma faixa es-
treita abaixo do nome das entidades. Todo atributo no interior dessa 
faixa é parte da chave primária.
A escolha da chave primária é relativamente fácil para algumas entida-
des. O atributo CRM foi escolhido para ser a chave primária de Médi-
co, pois podem compartilhar do mesmo nome e sexo, mas não podem 
existir dois médicos com o mesmo registro no Conselho Regional de 
Medicina. Os atributos telefone, celular e e-mail costumam ser únicos, 
como toda chave primária, mas costumam mudar com muita facilidade 
ao longo do tempo.
Código da especialidade foi selecionado para ser a chave primária de 
Especialidade. Embora a descrição da especialidade também seja única, 
o código geralmente apresenta um menor tamanho, ocupando menos 
espaço de armazenamento e o que demanda menor esforço de digita-
ção e memorização da parte do usuário-final. O mesmo é válido para a 
identificação do plano de saúde, que é preferível ao nome fantasia para 
ser a chave primária da entidade Plano de Saúde.
A entidade Especialista não apresenta atributos próprios. CRM é origi-
nário da entidade Médico e o código da especialidade – como dito em 
seu nome – é proveniente da entidade Especialidade. Diante da escassez 
de atributos, ambos foram combinados para a formação de uma chave-
primária composta. Afinal, nenhum desses atributos isoladamente fun-
ciona adequadamente como chave primária. Se apenas o CRM fizesse 
parte da chave primária, não teríamos como registrar um médico com 
Médico
Nome
Sexo
Telefone
Celular
Email
CRM
Paciente
Nome
Sexo
Telefone
Celular
Id_Paciente
Especialidade
Descrição
Cod_Especialidade
Plano_Saude
Nome_Fantasia
Id_Plano
Especialista
Cod_Especialidade
CRM
Consulta
Data
Hora
Id_Plano
CRM
Id_Paciente
Capítulo 2 
51
Linguagem de Programação
mais de uma especialidade nessa entidade. Para tanto, precisaríamos re-
petir o CRM e chaves primárias não aceitam duplicação de valores. Por 
outro lado, se apenas o código da especialidade fizesse parte da chave 
primária, não teríamos como registrar mais de um médico para uma 
mesma especialidade. Afinal, isso exigiria a impossível replicação de có-
digos de especialidade.
A solução encontrada, de definição da chave primária com a combi-
nação dos dois atributos, é a ideal. Nesse caso, o que não pode repetir 
é a combinação dos valores desses atributos. Ficamos assim impedidos 
de registrar um médico com a mesma especialidade mais de uma vez. 
Entretanto, nada nos impede de registrar o mesmo médico para dife-
rentes especialidades ou a mesma especialidade para diferentes médi-
cos. Isso exigiria a replicação do CRM ou do código de especialidade 
isoladamente, mas não a repetição conjunta do CRM e código da es-
pecialidade simultaneamente.
Qualquer entidade sempre apresentará uma e apenas uma chave 
primária. Contudo, uma chave primária pode ser formada por 
um único atributo (chave primária simples) ou por uma combi-
nação de dois ou mais atributos (chave primária composta).
A entidade Consulta possui dois atributos próprios: data e hora. Porém, 
sua chave primária é composta principalmente por atributos originários 
de outras entidades: Identificador do paciente, CRM e Data. Assim como 
no caso da entidade Especialista, a replicação dos valores de um desses 
atributos isoladamente é perfeitamente possível. Somente a repetição 
dos valores dos três atributos simultaneamente seria problemática.
2.2.2 Chave estrangeira
O conceito de chave estrangeira é tão importante para os bancos de da-
dos relacionais quanto o de chave primária.
Modelagem de Dados
52
Técnico em Informática
Chave estrangeira é um atributo ou conjunto de atributos ori-
ginário de uma entidade que é replicado em outra. Essa repli-
cação tem porobjetivo estabelecer uma associação entre linhas 
das duas entidades.
Sem as chaves estrangeiras seria impossível criar relacionamen-
tos entre entidades no modelo relacional.
Uma chave estrangeira em uma determinada entidade sempre 
será uma chave primária em sua entidade de origem.
Na Figura 29 é apresentado um diagrama ER para o contexto de uma 
instituição de ensino que oferece variados cursos. Cada aluno pode 
matricular-se em apenas um curso, mas cada curso pode ter muitos 
alunos. Caso um aluno resolva fazer mais de um curso, precisará de 
nova matrícula.
Ao longo do curso, o aluno pode frequentar muitas disciplinas e uma 
disciplina pode ser frequentada por muitos alunos. Desse relaciona-
mento de cardinalidade N:N, surge a relação Histórico – onde podem 
ser registradas as notas e frequências obtidas pelo aluno.
Um curso pode possuir muitas disciplinas e uma mesma disciplina 
pode pertencer a muitos cursos simultaneamente. Desse relacionamen-
to de cardinalidade N:N surge a relação Grade_Curricular, que mantém 
informações sobre as disciplinas que fazem parte de cada curso, assim 
como o período a que pertencem.
Capítulo 2 
53
Linguagem de Programação
Figura 29 – Diagrama Entidade-Relacionamento
Observe que no relacionamento N:1 entre Aluno e Curso nenhuma cha-
ve estrangeira aparece. No modelo Entidade-Relacionamento (MER), 
a chave estrangeira não aparece explicitamente. Ela é apenas sugerida 
pela existência do relacionamento. Uma exceção ocorre nos relaciona-
mentos de cardinalidade N:N. Note que a relação Histórico apresenta 
atributos que não são originários dela mesma: Matrícula é proveniente 
da entidade Aluno e Cod_Disciplina, da entidade Disciplina. O mesmo 
com Grade_Curricular: Cod_Curso vem da entidade Curso e Cod_Dis-
ciplina, da entidade Disciplina.
A Figura 30 mostra o relacionamento entre as tabelas Aluno e Curso. A 
chave estrangeira aparece na tabela Aluno em vez de na tabela Curso. 
Conforme explicado no primeiro capítulo, essa é a melhor solução (ver se-
ção 1.4.3, sobre o modelo relacional). Caso a chave estrangeira residisse 
na tabela Curso, teríamos um nível exagerado de replicação dos dados.
possui
cursa
Matricula-se em
N
N
N
N N
1
Cod_Disciplina
Nome_Disciplina
Carga_Horária
Ementa
Disciplina
Grade_Curricular
Histórico
Aluno
Matricula
Nome_Aluno
Sexo
Nascimento
Cod_Curso
Cod_Disciplina
Período
Matrícula
Cod_Disciplina
Semestre
Nota_Final
Frequência
Condição
Curso
Cod_Curso
Nome_Curso
Modelagem de Dados
54
Técnico em Informática
Existe uma regra bem simples para a determinação de qual tabela 
deve apresentar a chave estrangeira em um relacionamento de 
cardinalidade 1:N ou N:1. Nesses casos, a tabela do lado “N” do re-
lacionamento sempre fica com a chave estrangeira (que é a chave 
primária da entidade da extremidade “1” do relacionamento).
Quando a cardinalidade é N:N, a chave estrangeira fica com ne-
nhuma das tabelas localizadas na extremidade do relacionamen-
to. Afinal todas as extremidades são “N”. Sob essa situação de 
equilíbrio é natural que as chaves estrangeiras – provenientes das 
tabelas das extremidades – permaneçam na relação que emerge 
no centro do relacionamento.
Figura 30 – Tabelas Aluno e Curso (destaque para a chave estrangeira).
No exemplo da Figura 30, a tabela Aluno passou a contar com o atributo 
Cod_Curso como uma chave estrangeira, pois, em seu relacionamento 
com a tabela Curso, encontra-se do lado “N” da cardinalidade 1:N.
Ao contrário de uma chave primária, a chave estrangeira pode 
conter valores nulos.
Atividade 13
Determine as chaves primárias e estrangeiras para cada entidade 
do diagrama ER desenvolvido na Atividade 12.
Aluno
Matrícula Nome_Aluno Sexo Nascimento Cod_Curso
12359 José da Silva M 14/02/1985 INF
12360 Asdrúbal Linhares M 20/12/1982 SAN
12361 Andressa Simões F 25/08/1986 SAN
12390 Desidério Silva M 03/10/1989 MAT
13000 Lina Silva F 22/09/1996 INF
Curso
Cod_Curso Nome_Curso
INF Informática
MAT Matemática
SAN Saneamento Ambiental
Capítulo 2 
	BANCO DE DADOS - CAPÍTULO 2
	BANCO DE DADOS - PARTE I

Continue navegando