Modelagem de Dados Na Pratica
Modelagem de Dados Na Pratica
Modelagem de Dados Na Pratica
ARAÚJO, M. A. P.
1. INTRODUÇÃO
Vale lembrar que, apesar de uma prática comum, não é obrigatório nomear os
relacionamentos, exceto quando estes irão originar tabelas, o que é o caso de
relacionamentos n:n ou relacionamentos que possuem atributos. Nestes casos, o
nome dos relacionamentos normalmente são os nomes das tabelas resultantes.
Entretanto, nomear relacionamentos é importante para uma melhor compreensão do
modelo e este recurso será utilizado quando for necessário. Neste exemplo, foram
nomeados os relacionamentos entre as entidades Funcionario e Departamento, uma
vez que seu entendimento fica dificultado se os relacionamentos não forem
nomeados, por existirem dois relacionamentos entre as mesmas entidades.
A seguir, é descrita a estrutura inicial das entidades, onde o atributo
determinante está sublinhado. Observe que, propositadamente, foram deixados os
atributos da editora dentro da entidade Obra:
Obra (cod_obra, titulo, autor_principal, ano_publicacao, situacao_obra,
tipo_obra, cod_editora, nome_editora, cidade)
Usuario (cod_usuario, nome_usuario, endereco, telefone, CPF)
Emprestimo (cod_emprestimo, cod_obra, cod_usuario,
data_emprestimo, horario_emprestimo, data_prevista_retorno,
num_matricula_funcionario)
Devolucao (cod_emprestimo, data_devolucao, horario_devolucao,
num_matricula_funcionario)
Funcionario (num_matricula, nome_funcionario, cod_departamento)
Neste caso, a nova tabela gerada, Obra_Assunto, terá como chave primária a
junção das chaves primárias das duas tabelas participantes, formando uma chave
primária composta. Além disso, cada parte da chave primária será também uma
chave estrangeira para sua tabela de origem. Assim, a cada relacionamento de uma
obra com um assunto, gera-se um novo registro na tabela Obra_Assunto,
transformando o relacionamento n:n do modelo conceitual em dois relacionamentos
1:n no modelo lógico. Observa-se ainda que o nome do relacionamento no modelo
conceitual foi substituído por um nome de tabela que tivesse algum significado no
modelo lógico, pois este será o nome da tabela no banco de dados.
Um outro requisito apresentado trata da necessidade de armazenar os
autores de uma obra. Trata-se também de um relacionamento n:n, uma vez que uma
obra tem diversos autores e um autor pode estar associado a diversas obras. Porém,
neste caso específico, tem-se uma particularidade, uma vez que é importante
identificar a ordem dos autores de uma obra, caracterizando quem é o primeiro
autor, o segundo, e assim sucessivamente. Este requisito tornou-se necessário para
evitar cadastrar repetidamente um mesmo autor que participa em diversas obras,
facilitando também a busca por autores. A questão a ser tratada aqui é relativa à
ordem do autor na lista de autores de uma obra. Esta informação não pode ficar na
tabela Obra, uma vez que esta possui diversos autores, e também não pode ficar na
tabela Autor, uma vez que o mesmo pode estar vinculado a diversas obras. Neste
caso, o local apropriado para armazenar esta informação é no próprio
(0,N) (1,1)
(0,N) (1,1)
Autor Possui
Usuario
Chefia
(1,1)
(0,N)
(1,1)
(1,1) (0,N)
(0,N) Lotacao
Possui Obra Exemplar
Editora
Devolucao
Usuario
Emprestimo Funcionario
Autor
Reserva
Obra_Autor
Exemplar Manutencao
Obra_Assunto Obra
Motivo_Manutencao
Assunto
Departamento
Percebe-se nas tabelas Livro e Periodico que ambas possuem como chave
primária o campo “cod_obra”, o mesmo da tabela que representa a generalização.
Esta é uma característica de estruturas generalização/especialização, onde todas as
tabelas da hierarquia possuem a mesma chave primária, aquela definida na tabela
mais genérica. Usualmente, ainda coloca-se um atributo na tabela que representa a
generalização, neste caso a tabela Obra, para indicar a tabela que possui a
complementação de seus dados, Livro ou Periodico neste caso. Isto não precisou
ser feito neste momento, pois a tabela Obra já possuía um atributo chamado
“tipo_obra”, justamente para este fim.
A tabela Item_Requisicao representa a agregação do modelo conceitual.
Percebe-se, neste caso, que o relacionamento entre as entidades Obra e Requisicao
é de cardinalidade n:n, fazendo com que esta tabela surgisse de qualquer forma. A
particularidade aqui se refere à ligação desta tabela Item_Requisicao com a tabela
Fornecedor, de forma opcional, oferecendo a possibilidade de um item de requisição
ainda não possuir um fornecedor. Isto fica evidenciado no modelo conceitual uma
vez que o relacionamento com a tabela Fornecedor é feito diretamente com a
agregação, e não com nenhuma de suas entidades participantes, caracterizando
que um fornecedor está associado com uma obra de uma determinada requisição.
Esta situação não poderia ser resolvida com um relacionamento ternário entre as
entidades Obra, Fornecedor e Requisição pois, neste caso, as chaves primárias das
três entidades participantes comporiam a chave primária da entidade
7. Considerações Finais
8. Referências Bibliográficas