Bases de dados: Propriedades da relação e relações [1:1]
Carlos SantosLabMM 4 - NTC - DeCA - UAAula 05, 28-02-2013
Muitos para muitos [M:M]
EncomendasEncomendasnrEncomenda DataEncom
1 2008-‐01-‐162 2008-‐02-‐023 2008-‐03-‐094 2008-‐04-‐125 2008-‐05-‐26
ProdutosProdutos
idProduto nomeProd
1 Cadeira
2 Mesa de Sala
3 Aparador
4 Sofá
Encomendas_has_ProdutosEncomendas_has_Produtos
Encomendas_nrEncomenda Produtos_idProduto
1 2
1 3
2 2
3 1
3 2
3 3
5 2
5 3
PROBLEMA: Como podemos adicionar uma “Cadeira” à encomenda 3?
Propriedades de uma relação
Vendedores
idVend NomeVend ApelidoVend MoradaVend Sexo ContatoVend DataNascimento DataEntradaEmpresa
Encomendas
nrEncomenda DataEncomenda DataPagamento
Clientes
idCliente NomeCliente ApelidoCliente MoradaCliente ContactoCliente Tipo (priv/empr)
Produtos
idProduto NomeProd DescricaoProd Preco Peso Dimensoes
Quantidade
Muitos para muitos [M:M] + prop. de relação
EncomendasEncomendasnrEncomenda DataEncom
1 2008-‐01-‐162 2008-‐02-‐023 2008-‐03-‐094 2008-‐04-‐125 2008-‐05-‐26
ProdutosProdutos
idProduto nomeProd
1 Cadeira
2 Mesa de Sala
3 Aparador
4 Sofá
Encomendas_has_ProdutosEncomendas_has_Produtos
Encomendas_nrEncomenda Produtos_idProduto quanFdade
1 2 1
1 3 3
2 2 4
3 1 5
3 2 1
3 3 2
5 2 5
5 3 4
Quanto custa?
EncomendasEncomendasnrEncomenda DataEncom
1 2008-‐01-‐162 2008-‐02-‐023 2008-‐03-‐094 2008-‐04-‐125 2008-‐05-‐26
ProdutosProdutos
idProduto nomeProd preco
1 Cadeira €50
2 Mesa de Sala €800
3 Aparador €3000
4 Sofá €1200
Encomendas_has_ProdutosEncomendas_has_Produtos
Encomendas_nrEncomenda Produtos_idProduto quanFdade
1 2 1
1 3 3
2 2 4
3 1 5
3 2 1
3 3 2
5 2 5
5 3 4
Um para um [1:1]
Novo cenário: uma empresa tem necessidade de gerir a ocupação de gabinetes por administradores, sendo que:
• Cada administrador possui apenas um gabinete• Cada gabinete está atribuído apenas a um administrador
Administradores
idAdmin NomeAdmin ApelidoAdmin
Gabinetes
idGabinete Localizacao
Um para um [1:1]
• Cada administrador possui apenas um gabinete• Cada gabinete está atribuído apenas a um administrador
1:1 Identifying Relationship ________
• Pode existir um administrador sem um gabinete• PK IdAdministrador pode conter valores que não existem ainda na FK
Administradores_idAdministrador• Não pode existir um gabinete sem um administrador
• FK idGabinete não pode conter nulos pois também é PK
Existe dependência entre os administradores e os gabinetes!
FK que também é PK!
Um para um [1:1]
• Cada administrador possui apenas um gabinete• Cada gabinete está atribuído apenas a um administrador
Problema: O que acontece se existirem gabinetes vazios?
FK que também é PK!
Solução: Criar uma tabela de relação que torne as entidades independentes.
Pode existir um administrador sem um gabinete
• PK IdAdministrador pode conter valores que não existem ainda na FK Administradores_idAdministrador
Pode existir um gabinete sem um administrador
• PK IdGabinete pode conter valores que não existem ainda na FK Gabinetes_idGabinete
A tabela de relação Administradores_has_Gabinetes conterá apenas as situações em que a um administrador foi atribuído um gabinete
Um para um [1:1]
Para evitar valores repetidos nas FK que constituem a PK composta da tabela de relação, as FK são configuradas com o parâmetro UNIQUE
Um para um [1:1]
AdministradoresAdministradores
idAdministrador NomeAdmin
1 João
2 Maria
3 Manuel
GabinetesGabinetes
idGabinete Localizacao
1 1012 1023 103
Administradores_GabinetesAdministradores_Gabinetes
Administradores_idAdministrador Gabinetes_idGabinete
1 2
2 3
Questão
Como podemos evitar a criação de nulos numa relação de 1:M?
• numa situação: 1 ou muitos• numa situação: 0 ou muitos
Por vezes pode não ser admissível implementar relações 1:M sem utilizar uma tabela de relação!
MySQL Workbench
Mais importante que tudo... o MySQL Workbench não é um SGBDR!
• É uma aplicação com várias ferramentas que facilitam algumas tarefas inerentes ao desenvolvimento e manutenção de BDs e SGBRs
• O MySQL Server é que é um SGBDR
Ferramentas
• Server Administration• Data Modeling• SQL Development
MySQL Workbench: Data modeling
Diagrama Enhanced Entity-Relationship (EER)
• Modelação da BD: entidades, propriedades e suas relações
Physical Schemata
• Schema: conjunto de objetos e regras que estruturam a BD• A ter em atenção:
• Verificar se a Collation de todas as tabelas está definida como utf8 - utf8_general_ci (suporte caracteres PT)
• Nome do schema deve ser igual ao nome da BD destino• Verificar se o Engine de todas as tabelas está definido como InnoDB
Exportar o schema da BD
• File -> Export -> Forward Engineer SQL CREATE Script…• Gera um ficheiro SQL com o código necessário para a criação da BD
MySQL Workbench: Data modeling: Export
Antes de criar, apaga objetos que já existam com o mesmo nome
Mostra eventuais mensagens de erro/alerta durante o processo de criação
Permite inserir dados na BD no momento da sua criação
MySQL Workbench: Data modeling: Export
O que é?Para que serve?
MySQL Workbench: SQL Development
Para que serve?
• Ligação a uma base de dados• Executar SQL Queries• Executar SQL Scripts• Editar dados de tabelas
• alternativa: phpMyAdmin
Recommended