6. 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 Gabinetes
idAdmin idGabinete
NomeAdmin Localizacao
ApelidoAdmin
7. Um para um [1:1]
• Cada administrador possui apenas um gabinete
• Cada gabinete está atribuído apenas a um administrador
FK que também é PK!
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!
8. Um para um [1:1]
• Cada administrador possui apenas um gabinete
• Cada gabinete está atribuído apenas a um administrador
FK que também é PK!
Problema: O que acontece se existirem gabinetes vazios?
9. Um para um [1:1]
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
10. 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
Administradores
Gabinetes
idAdministrador NomeAdmin
idGabinete Localizacao
1 João 1 101
2 Maria 2 102
3 Manuel 3 103
Administradores_Gabinetes
Administradores_idAdministrador Gabinetes_idGabinete
1 2
2 3
11. 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!
12. 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
13. 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
14. 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
16. 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