Fundamentos de Bancos de Dados 3 a Prova Prof. Carlos A. Heuser 4 de julho de 2007 Duração: 2 horas Prova com consulta Questão 1 (Construção de modelo ER - Peso 3) Deseja-se construir um sistema gestão de sítios WEB. Este sistema irá armazenar o conteúdo de um sítio web. Um sítio tem um nome, uma url e um número de identificação interna. Cada sítio é composto por muitas páginas. Cada página pertence a um sítio somente, é identificada por um número identificador e tem um nome. As páginas podem ser de dois tipos, chamados custom e template. No caso das páginas custom, o sistema simplesmente armazena o conteúdo da página, na forma de string longo que contém o código HTML ou PHP da página, juntamente com um sinalizador que indica a linguagem (HTM ou PHP). Não estão previstas outras linguagens. As páginas template são páginas com funcionalidade pré-determinada. Estas páginas são usadas para acessar uma base de dados. Neste caso, o sistema deve armazenar os dados necessários ao acesso da base de dados, que são o número P do servidor, o nome da base de dados, o nome do usuário do SGBD e a senha de acesso. Por sua vez, as páginas template podem ser classificadas em dois tipos, as páginas que exibem dados do resultado de uma consulta e as páginas que disponibilizam um formulário que permite que sejam feitas modificações em uma tabela. Para as páginas de consulta, o sistema armazena um comando SQL que monta a consulta a exibir na página. A partir deste comando a página é montada dinamicamente cada vez que requisitada pelo usuário. Já para páginas de formulário de modificação, o sistema armazena o nome da tabela que é alterada através do formulário, bem como três indicadores que informam que tipo de modificações (inclusão, exclusão e alteração) podem ser realizada através do formulário. Além de armazenar o conteúdo do sítio, o sistema de gestão deve controlar o acesso e a modificação de páginas. Para tal, o sistema deve manter um cadastro de 1
usuários, identificados por seu nome, tendo cada um uma senha. Para cada sítio e para cada usuário, pode ser definido seu direito de acesso. O direito de acesso pode ser "Acesso", que significa que o usuário somente pode acessar o sítio, ou "Adm", que significa que ele também pode fazer modificações nas páginas do sítio. Da mesma forma, para cada página e para cada usuário, também pode ser definido o direito de acesso à página específica ("Adm"ou "Acesso"). Solução: A solução encontra-se na Figura 1 e está apresentada com a notação do Power designer. 2
Direito site direito acesso site Numero Sítio Nome Sítio URL Sítio Sítio WEB Relationship_2 Relationship_5 Relationship_1 Nome usuário senha usuario Usuario Página WEB Nome da página Número da página VMBT60 Relationship_3 Relationship_4 nheritance_1 Direito pagina direito acesso pagina Página custom Conteúdo da página linguagem da página LVA32000 A3 Pagina template Servidor de BD Nome do BD usuario senha A9 nheritance_2 pagina consulta Consulta SQL LVA1000 forumario alteracoa Nome da Tabela nclusao Exclusao Alteração BL BL BL Figura 1: Modelo conceitual para a questão 1 3
Sessão frustrada DataHora DT Relationship_1 Usuário número interno usuário nome do usuário senha do usuário Relationship_2 Ordem de visita inicio da visita fim da visita Página visitada DT DT Relationship_3 Relationship_4 início fim Sessão realizada Página número da página nome da página DT DT <UNDEF> Figura 2: Modelo conceitual para a questão 2 Questão 2 (Projeto de base de dados relacional - Peso 2,6) Na figura 2, está apresentado um modelo ER parcial de um sistema de controle de acesso a páginas WEB. A notação usada é no estilo engenharia de informação, especificamente a do software Power Designer que vimos em aula. Os atributos estão anotados dentro dos retângulos representativos das entidades. Atributos identificadores estão sublinhados. Relacionamentos são representados por linhas. A cardinalidade mínima 0 é representada por um círculo, e a cardinalidade mínima 1 é representada por um pequeno traço. A cardinalidade máxima n é representada por um pequeno triângulo, e a cardinalidade máxima 1 é representada pelas ausência deste triângulo. Relacionamentos identificadores têm um símbolo especial (ver o relacionamento entre Usuário e Sessão realizada). A entidade Usuário corresponde aos usuários que estão sendo controlados. A entidade Sessão frustrada representa as sessões que não puderam ser realizadas por senha incorreta. Já a entidade Sessão realizada corresponde às sessões que efetivamente ocorreram. A entidade Página visitada informa as páginas que foram visitadas em uma sessão, sendo o atributo Ordem de visita um número inteiro que representa a seqüencia de visita das páginas do site. A entidade Página representa as páginas propriamente ditas. Deve ser projetado o esquema (modelo lógico) de uma base de dados relacional para o modelo ER em questão. A base de dados deve refletir exatamente o especificado no modelo conceitual. O esquema da base de dados relacional deve conter os nomes das tabelas, os nomes dos atributos, atributos que formam a chave primária e as chaves estrangeiras. Quando houver alternativas de projeto 4
dizer que alternativa foi usada. Pode ser usada a notação textual vista em aula para representar esquemas relacionais. Solução: USUARO ( NUMERO_NTERNO_USUARO, NOME_DO_USUARO, SENHA_DO_USUARO); SESSAO_FRUSTRADA ( NUMERO_NTERNO_USUARO,DATAHORA); (NUMERO_NTERNO_USUARO) references USUARO (NUMERO_NTERNO_USUARO) SESSAO_REALZADA ( NUMERO_NTERNO_USUARO,NCO, FM); (NUMERO_NTERNO_USUARO) references USUARO (NUMERO_NTERNO_USUARO) PAGNA_VSTADA ( NUMERO_NTERNO_USUARO,NCO,ORDEM_DE_VSTA, NUMERO_DA_PAGNA, NCO_DA_VSTA, FM_DA_VSTA); (NUMERO_NTERNO_USUARO, NCO) references SESSAO_REALZADA (NUMERO_NTERNO_USUARO, NCO) (NUMERO_DA_PAGNA) references PAGNA (NUMERO_DA_PAGNA) PAGNA (NUMERO_DA_PAGNA, NOME_DA_PAGNA); 5
Questão 3 (Engenharia reversa de BD relacional - Peso 2,6) Abaixo está apresentado o esquema lógico de uma parte de uma base de dados que mantém dados sobre pessoas relacionadas a uma universidade. Execute um processo de engenharia reversa, construindo o modelo entidaderelacionamento correspondente a esta base de dados. O modelo ER deve refletir exatamente esta base de dados, contendo entidades, atributos, relacionamentos e cardinalidades máximas (quando possível), bem como os identificadores. O modelo deve ser construído aplicando as regras apresentadas no livro. Para representar o modelo ER use a notação do livro ou da ferramenta CASE utilizada no trabalho. Pessoa (NumeroCartao,NomePess,SexoPess,DataNascPess) /* tabela com dados das pessoas */ Aluno (NumeroCartao, NoDeAnosNaEscolaPublica, ResultadoENEM) (NumeroCartao) referencia Pessoa /* tabela com os dados dos alunos */ BolsasC (NumeroCartao,AnoSemestre,CodOrgãoFinanciador) (NumeroCartao) referencia Aluno (CodOrgãoFinanciador) referencia OrgãoFin /* tabela com dados sobre as bolsas de C que cada aluno teve*/ ngressoemcurso (NumeroCartao,CodCr,Datangresso, DataFinaliza) (NumeroCartao) referencia Aluno (CodCr) referencia Curso /* tabela com dados referentes aos ingressos dos alunos nos cursos */ Curso (CodCr,NomeCurso,NivelCurso) /* tabela com dados dos cursos*/ OrgãoFin (CodOrgãoFinanciador,NomeOrgãoFinanciador) /* tabela com dados dos orgãos que financiam bolsas de iniciação científica*/ Solução: O modelo conceitual gerado pela engenharia reversa encontra-se na figura 3. A entidade ngresso em curso poderia ser um relacionamento n:n entre 6
Pessoa Número do cartão Nome da pessoa Sexo da pessoa Data de nascimento L A1 D Código do orgão Nome do orgão Orgão Financiador L nheritance_1 Relationship_2 Aluno Número de anos em esc publ Resultado no ENEM F Relationship_1 BolsaC Ano semestre Relationship_3 ngresso em curso Data de ingresso Data de finalização D D Relationship_4 Código do curso Nome do curso Nível do curso Curso L VA10 Figura 3: Modelo conceitual para a questão 3 Aluno e Curso. 7
Questão 4 (Normalização - Peso 1,8) Considere a tabela abaixo, não necessariamente normalizada, referente à base de dados da questão anterior. Esta tabela foi obtida a partir de um documento que lista, para cada aluno: 1. seu número de cartão, seu nome, seu sexo e sua data de nascimento; 2. dados das bolsas C que o aluno obteve, incluindo o ano semestre em que teve bolsa, e o código e nome do órgão financiador da bolsa; 3. dados dos cursos nos quais ele ingressou, incluindo o código e o nome do curso e a data de ingresso no mesmo. Tabela (NumeroCartao,NomePess,SexoPess,DataNascPess, (AnoSemestre,CodOrgãoFinanciador, NomeOrgãoFinanciador), (CodCr,Datangresso, NomeCurso), ) As dependências funcionais (podendo incluir dependências transitivas) que existem nesta tabela são as seguintes: (NumeroCartao) NomePess (NumeroCartao) SexoPess (NumeroCartao) NomeDataNascPess (NumeroCartao,AnoSemestre) CodOrgãoFinanciador (NumeroCartao,AnoSemestre) NomeOrgãoFinanciador (CodOrgãoFinanciador) NomeOrgãoFinanciador (CodCr) NomeCurso 1. Diga em que forma normal encontra-se a tabela. 2. Caso a tabela não se encontre na terceira forma normal, mostre a transformação da tabela para a terceira forma normal. Mostre cada forma normal intermediária, entre aquela em que a tabela se encontra e a terceira forma normal. Solução: 8
1. A tabela não se encontra na 1FN pois contém tabelas aninhadas. 2. 1FN: (eliminação das tabelas aninhadas) Tab1 (NumeroCartao,NomePess,SexoPess,DataNascPess) Tab2 (NumeroCartao,AnoSemestre,CodOrgãoFinanciador, NomeOrgãoFinanciador) Tab3 (NumeroCartao,CodCr,Datangresso, NomeCurso) 2FN: (eliminação das dependências funcionais parciais) Tab1 (NumeroCartao,NomePess,SexoPess,DataNascPess) Tab2 (NumeroCartao,AnoSemestre,CodOrgãoFinanciador, NomeOrgãoFinanciador) Tab3 (NumeroCartao,CodCr,Datangresso) Tab4 (CodCr, NomeCurso) 3FN: (eliminação das dependências funcionais transitivas) Tab1 (NumeroCartao,NomePess,SexoPess,DataNascPess) Tab2 (NumeroCartao,AnoSemestre,CodOrgãoFinanciador) Tab3 (NumeroCartao,CodCr,Datangresso) Tab4 (CodCr, NomeCurso) Tab5 (CodOrgãoFinanciador, NomeOrgãoFinanciador) 9