E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
05 LabMM4 - Bases de dados
1. Bases de dados: identify e non-identify, Relações
[1:1], MySQL Workbench
Carlos Santos
LabMM 5 - NTC - DeCA - UA
Aula 05, 01-03-2012
2. Um para muitos [1:M] - identify
• Cada cliente poderá realizar várias encomendas
• Cada encomenda tem que ser realizada apenas por um cliente
[1:n] Identifying Relationship ________ PK Composta
• Não pode existir uma encomenda sem um cliente
• FK Clientes_idCliente não pode conter nulos pois pertence à PK
• Pode existir um cliente sem uma encomenda
• PK IdCliente pode conter valores inexistentes na FK Clientes_idCliente
Identifying -> Existe dependência entre as entidades!
3. Um para muitos [1:M] - identify
Clientes Encomendas
idCliente nomeCliente nrEncomenda dataEncomenda Clientes_idCliente
1 João 1 2010-‐02-‐23 1
2 Maria 2 2010-‐04-‐11 2
3 Manuel 3 2010-‐03-‐13 2
4 2010-‐05-‐21 1
1 2010-‐06-‐25 2
NÃO PODEM existir PARES REPETIDOS na PK composta da tabela Encomendas
MAS PODEM existir valores repetidos em cada uma das colunas que constituem a
PK composta... (qual o problema?)
4. Um para muitos [1:M] - identify
PROBLEMA:
Tal como é mostrado
PODEM existir vários
clientes a realizar a mesma
encomenda!
Clientes Encomendas
idCliente nomeCliente nrEncomenda dataEncomenda Clientes_idCliente
1 João 1 2010-‐02-‐23 1
2 Maria 2 2010-‐04-‐11 2
3 Manuel 3 2010-‐03-‐13 2
4 2010-‐05-‐21 1
1 2010-‐06-‐25 2
SOLUÇÃO: configurar nrEncomenda com AUTO INCREMENT (AI) ou com UNIQUE
5. 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
6. 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 Administradores_idAdministrador não pode conter nulos pois também
é PK
Existe dependência entre os administradores e os gabinetes!
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!
Problema: O que acontece se existirem gabinetes vazios?
8. 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
9. Um para um [1:1]
Para evitar valores repetidos nas FK que constituem a PK composta da
tabela de relação configura-se com o parâmetro UNIQUE na definição
dessas colunas
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
10. MySQL Workbench
Mais importante que tudo... o MySQL Workbench não é um SGBDR!
• É uma aplicação com várias ferramentas qye facilitam algumas tarefas
inerentes ao desenvolvimento e manutenação de BDs e SGBRs
• O MySQL Server é que é um SGBDR
Ferramentas
• Server Administration
• Data Modeling
• SQL Development
11. MySQL Workbench: Data modeling
Diagrama Enhanced Entity-Relationship (EER)
• Modelação da BD: entidades, propriedades e suas relações
Physical Schemata
• Schema: conjunto de objectos 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
12. 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
14. 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