Bases de Dados 1 Proposta de resolução de 3 exercícios da 1ª aula prática Nas páginas seguintes encontram-se algumas propostas de resoluções das 3 primeiras situações da ficha nº1. Referente à primeira situação, correspondente ao cenário da transportadora aérea, apresentam-se duas propostas de resolução diferentes, correspondentes a duas conceptualizações distintas apresentadas nas aulas. Referente às restantes duas situações, apresenta-se apenas uma proposta para cada uma. Cada proposta de resolução inclui: o diagrama de ER; a lista de tabelas correspondentes à conversão directa do diagrama de ER; a lista de tablelas após algumas simplificações.
Situação 1 Uma transportadora aérea pretende implementar uma base de dados com a seguinte informação: A transportadora tem vários aviões. Cada avião tem, para além da matrícula, um, a marca do avião, o número de lugares, e indicação da sua autonomia. Na transportadora trabalham vários pilotos. Cada avião faz vários voos. Cada voo deve ter, pelo menos, a indicação da e hora em que se efectua, dos locais de partida e de destino. Cada voo de um dado avião é pilotado por um piloto. Solução 1 autonomia nvôo hora Marcas Tipo De Aviões Usado Vôos destino modelo lugares matrícula partida Comandante Pilotos licença De Pilotagem Aviões({matrícula,}) Vôos({nVôo,,hora,destino,partida}) Pilotos({licençaDePilotagem,}) TipoDe({modelo,matrícula}) Usado({matrícula,nVôo}) Comandante({nVôo,licençaDePilotagem}) Aviões({matrícula,,modelo}) Vôos({nVôo,,hora,destino,partida,matrícula, licençadepilotagem}) Pilotos({licençaDePilotagem,})
Situação 1 Uma transportadora aérea pretende implementar uma base de dados com a seguinte informação: A transportadora tem vários aviões. Cada avião tem, para além da matrícula, um, a marca do avião, o número de lugares, e indicação da sua autonomia. Na transportadora trabalham vários pilotos. Cada avião faz vários voos. Cada voo deve ter, pelo menos, a indicação da e hora em que se efectua, dos locais de partida e de destino. Cada voo de um dado avião é pilotado por um piloto. Solução 2 partida hora nvôo Carreiras destino autonomia Este Vôo Marcas Tipo De Aviões Usado Vôo modelo lugares matrícula Comandante Pilotos licença De Pilotagem Aviões({matrícula,}) Carreiras({nVôo,destino,hora,partida}) Vôo({nVôo,}) Pilotos({licençaDePilotagem,}) TipoDe({modelo,matrícula}) Usado({matrícula,nVôo,}) Comandante({nVôo,,licençaDePilotagem}) EsteVôo({nVôo,}) Aviões({matrícula,,modelo}) Carreiras({nVôo,destino,hora,partida}) Vôo({nVôo,, matrícula, licençadepilotagem}) Pilotos({licençaDePilotagem,})
Situação 2 Uma fábrica pretende implementar uma base de dados para gerir os "stocks" dos seus armazéns, as encomendas, e as vendas. Para tornar o problema menos extenso, não vamos aqui considerar a parte relativa às vendas. Há assim que ter em conta que: A empresa comercializa vários produtos, cada um dos quais com um código, um, e um preço. Em cada momento a empresa deve ainda saber qual a quantidade existente no armazém de cada um dos produtos. Uma encomenda, que deve ter um número de encomenda e a em que foi feita, pode ter vários produtos, mas diz respeito apenas a um fornecedor. De cada fornecedor a empresa deseja guardar a informação do seu, número de contribuinte, morada, forma de pagamento, prazo de pagamento, e um código interno de tipo de fornecedor. preço unidades morada contribuinte Produtos Item Encomendas Fornecida Por Fornecedores código Do Produto quantidade número prazo fax Tipo de Fornecedor Tipos código Do Tipo Produtos({códigoDoProduto,,preço,quantidade}) Encomendas({número,}) Fornecedores({morada,contribuinte,,prazo,fax}) Tipos({códigoDoTipo,}) Item({códigoDoProduto,número,unidades}) FornecidaPor({número,contribuinte}) TipoDeFornecedor({contribuinte,códigoDoTipo}) Produtos({códigoDoProduto,,preço,quantidade}) Encomendas({número,,contribuinte}) Fornecedores({morada,contribuinte,,prazo,fax,códigoDoTipo}) Tipos({códigoDoTipo,}) Item({códigoDoProduto,número,unidades})
Situação 3 Um grupo de docentes pretende organizar uma conferência e, para guardar toda a informação relevante, vai ter que criar uma base de dados. Na conferência são apresentados vários artigos, cada um dos quais com um título e um número. Cada artigo tem um ou mais autores. De cada autor, pretende armazenar-se para além do, o endereço de email, e o e morada da instituição a que estão associados. Há ainda a informação relativa aos participantes na conferência. De cada a participante deverá ser retida a informação do seu, morada e endereço de email. Além disso, distingue-se entre os participantes que são estudantes e os que não são. Cada participante não estudante tem de pagar antecipadamente a inscrição por transferência bancária, pelo que é necessário guardar o número da transação. Para não pagar, o estudante tem de enviar antecipadamente um certificado e na base de dados deve ser armazenado o da universidade que o passou. título número email Artigos Pessoas Pertence A Instituições ISA morada Inst Escrito Por Autores Participantes ISA disjunta univer Estudantes Não Estudantes transfer Artigos({título,número}) Pessoas({,email}) Instituições({Inst,morada}) Participantes({email}) Autores({email}) Estudantes({email,univer}) NãoEstudantes({email,transfer}) EscritoPor({número,email}) PertenceA({email,Inst }) Artigos({título,número}) Pessoas({,email,Inst }) Instituições({Inst,morada}) Autores({email}) Estudantes({email,univer}) NãoEstudantes({email,transfer}) EscritoPor({número,email