Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Criação de banco de dados visual com MySQL Workbench


No tutorial de hoje, você aprenderá a usar um utilitário de modelagem de banco de dados visual para desenhar um diagrama de banco de dados e gerar SQL automaticamente. Especificamente, revisaremos como usar o MySQL Workbench, uma ferramenta de design de banco de dados visual multiplataforma.

O que é o MySQL Workbench?


MySQL Workbench é uma ferramenta poderosa desenvolvida pela MySQL com três áreas principais de funcionalidade:
  • Desenvolvimento SQL :Substitui o navegador de consultas MySQL. Permite que o usuário se conecte a um banco de dados existente e edite e execute consultas SQL.
  • Modelagem de dados :Design e modelagem de banco de dados visual completo.
  • Administração de banco de dados :Substitui o administrador do MySQL. Interface gráfica para iniciar/parar servidores, criar contas de usuário, editar arquivos de configuração, etc.

Neste tutorial, vamos nos concentrar na Modelagem de dados aspecto para criar um banco de dados do zero, e então dê uma olhada rápida no editor SQL para executar nosso script SQL gerado e criar o banco de dados dentro do MySQL.

MySQL Workbench está disponível para Windows, Linux e Mac OSX. Existem duas edições diferentes:a Community OSS Edition e a Edição Padrão comercial . A edição da comunidade é Open Source e GPL licenciada, como seria de esperar. É totalmente funcional e é o que usaremos neste artigo. A edição comercial adiciona algumas funcionalidades extras, como validação de esquema e modelo ou geração de documentação.

Observação:este tutorial é baseado no Community OSS Edition versão 5.2 (5.2.16), atualmente em versão beta no momento da redação (abril de 2010).

Planejando nosso banco de dados


Para aprender a usar o MySQL Workbench, usaremos como exemplo um banco de dados muito simples para aulas online. Suponha que um grupo de professores queira oferecer aulas online de diversas disciplinas, usando o Skype ou qualquer outro software de videoconferência. Para nosso pequeno projeto, decidimos que precisamos armazenar as seguintes informações:

Ao desenhar nosso diagrama, também precisaremos conhecer as relações entre esses grupos de dados; então é melhor pensarmos nisso agora!
  • Um professor pode ensinar muitas matérias
  • Uma matéria pode ser ensinada por muitos professores
  • Cada turma tem apenas um professor
  • Um professor pode dar muitas aulas
  • Um aluno pode assistir a muitas aulas
  • Uma turma tem muitos alunos
  • Uma aula pode ter várias horas (em uma semana)
  • Em um determinado dia e hora, pode haver várias aulas
  • Uma aula é sobre um assunto
  • Um assunto pode ser ensinado em muitas aulas

Neste momento, temos todas as informações que precisamos para conhecer a estrela deste show...

Enviar no MySQL Workbench


É hora de lançar o Workbench. Na parte de modelagem de dados da tela inicial, clicamos em 'Criar novo modelo EER' , e a seguinte tela aparece:

Quando criamos um novo modelo de banco de dados, ele contém o esquema mydb padrão. Podemos renomeá-lo e usá-lo como nosso esquema de banco de dados. Um modelo de banco de dados pode ter vários esquemas diferentes.

O catálogo à direita mostrará todos os elementos em nosso esquema e nos permitirá arrastar e soltar elementos nos diagramas, se necessário.

Ter as seções separadas para Esquemas Físicos e Diagramas EER, e a possibilidade de incluir vários Esquemas em um modelo de banco de dados pode ser confuso. A próxima seção explica esses conceitos e como eles estão relacionados.

Esclarecendo conceitos


O esquema físico contém todas as peças necessárias para definir o banco de dados:tabelas, colunas, tipos, índices, restrições, etc. Isso é o que estamos realmente definindo. Cada objeto adicionado no modelo gráfico também aparece no esquema físico. É, de fato, uma maneira visual de definir nosso esquema.

Podemos ter vários esquemas para o mesmo modelo de banco de dados da mesma forma que podemos ter vários bancos de dados em um servidor MySQL. Cada esquema será um banco de dados MySQL. Por exemplo, na próxima tela, temos duas abas de esquema:

Se gerarmos o script SQL, teremos duas instruções CREATE DATABASE separadas - na verdade teremos CREATE SCHEMA que é apenas um sinônimo.
CREATE SCHEMA IF NOT EXISTS `schema1`;
CREATE SCHEMA IF NOT EXISTS `schema2`;

"EER significa Extended (ou Enhanced) Entity-Relationship . Os diagramas EER são apenas uma maneira de modelar os dados e as relações entre os dados usando símbolos padrão"

Eles serão listados como bancos de dados no host do servidor MySQL ao usar SHOW DATABASES.

Agora, o que é um diagrama EER?. EER significa Extended (ou Enhanced) Entity-Relationship>. Os diagramas EER são apenas uma maneira de modelar os dados e os relacionamentos entre os dados usando símbolos padrão. Os modelos EER podem ser complexos, mas o MySQL Workbench usa apenas um subconjunto de todos os elementos gráficos possíveis, porque o objetivo deste diagrama (nesta ferramenta) é ter cada elemento mapeado para o esquema físico.

Podemos usar um diagrama EER para definir todo o banco de dados ou apenas pequenas partes. Por exemplo, podemos ter um esquema com cinco tabelas definidas e, em seguida, criar um novo diagrama para definir mais duas tabelas usando o editor visual. O diagrama conterá apenas duas tabelas, mas essas duas tabelas também serão incluídas no esquema, juntamente com as cinco anteriores.

Criando nossas tabelas


De volta ao nosso exemplo inicial; temos que renomear o esquema padrão clicando duas vezes no nome. Neste ponto, temos duas possibilidades:podemos começar a adicionar tabelas ao nosso esquema físico usando o ícone add table, ou podemos iniciar um diagrama EER e adicionar todas as tabelas lá.

Prefiro adicionar um novo diagrama desde o início e criar meu esquema visualmente; no entanto, para mostrar como fazer isso com os dois métodos, vamos criar as duas primeiras tabelas na guia de esquema e continuar com o diagrama EER.

Ao clicar no botão Adicionar tabela ícone, o editor de tabelas abre como uma guia abaixo:

Usando o editor de tabelas, alteramos o nome da tabela e passamos para a aba de colunas (nas abas abaixo do editor) para inserir nossas colunas. Podemos escolher o tipo de dados (há uma lista suspensa com todos os tipos de dados do MySQL), atribuir o valor padrão, se necessário, e temos sete caixas de seleção para marcar qualquer uma das seguintes propriedades:
  • PK - Chave primária
  • NN - Não nulo
  • UQ - Único
  • BIN - Binário
  • UN - Não assinado
  • ZF - Preenchimento zero
  • IA - Incremento automático

Torne-se Visual


Essa é uma maneira de adicionar nossas tabelas, embora também possamos criá-las usando os diagramas. Se clicarmos no botão Adicionar diagrama ícone agora, vamos começar um novo diagrama vazio, e não é isso que queremos. Queremos que as duas tabelas que acabamos de criar estejam no diagrama.

Se formos ao menu, selecione Model/Create Diagram from Catalog Objects , agora temos nosso diagrama e estamos prontos para continuar.

Selecione o ícone da tabela à esquerda; o ponteiro muda para uma mão com uma pequena mesa. Em seguida, clique em qualquer lugar na tela para criar uma nova tabela.

Agora você só precisa clicar duas vezes na tabela, e a aba do editor aparecerá para editar o nome, colunas, tipos, etc.- da mesma forma que fizemos antes.

Depois de inserir os detalhes da coluna para as novas tabelas, estaremos prontos para começar a desenhar os relacionamentos.

Desenhando relacionamentos


Na barra de ferramentas vertical à esquerda, temos seis ferramentas disponíveis para criar relacionamentos.

Não se preocupe com o último, vamos explicar mais tarde. Para as relações 1:1 e 1:n, temos dois tipos diferentes de símbolos:identificadores e não identificadores. O que isso significa?

Um relacionamento é considerado identificar quando uma tabela é totalmente dependente da outra para existir.

Um relacionamento é considerado identificar quando uma tabela é totalmente dependente da outra para existir. Uma linha nessa tabela depende de uma linha na outra tabela. Um exemplo comum é ter uma tabela separada para armazenar telefones para usuários. Pode ser necessário tê-lo em outra tabela, porque pode haver vários telefones para um usuário, mas cada linha dessa tabela é totalmente dependente do usuário - ela pertence ao usuário.

Você deve estar ciente de que os relacionamentos têm algumas implicações. Se quisermos criar as tabelas físicas no MySQL, os relacionamentos devem ser mapeados de alguma forma. Existem algumas regras para mapear relacionamentos em tabelas:
  • Relações 1:1 . A chave primária de uma das tabelas é incluída como chave estrangeira na outra tabela.
  • 1:n relacionamentos . A chave primária da tabela no lado '1' é adicionada como chave estrangeira na tabela no lado 'n'.
  • relacionamentos n:m . Uma nova tabela (tabela de junção) é criada. A chave primária é composta pelas chaves primárias das duas tabelas originais.

Os relacionamentos de identificação são normalmente usados ​​para as tabelas de junção criadas a partir de um relacionamento muitos-para-muitos. Essas novas tabelas são totalmente dependentes das duas tabelas originais.

Além disso, no caso de relacionamentos de identificação 1:1 e 1:n, a chave estrangeira introduzida fará parte da chave primária dessa tabela, formando uma chave primária composta.

A boa notícia é que o MySQL Workbench conhece essas regras melhor do que a maioria de nós. Nós apenas desenhamos nossas linhas e as chaves estrangeiras ou tabelas de junção serão criadas automaticamente. Também podemos optar por fazê-lo manualmente, como veremos em breve.

Para desenhar uma relação, clique no ícone e, em seguida, clique nas duas tabelas para relacionar. Para relacionamentos um-para-muitos, clique primeiro na tabela lateral "muitos" e depois na tabela lateral "um". Vamos ver como fazer isso para a relação n:m professores-sujeitos, e para as 1:n professores-classes.

O nome padrão atribuído para as chaves estrangeiras e para as tabelas de junção podem ser alterados globalmente em Editar/Preferências/Aba Modelo , ou apenas para o presente projeto em Model/Model Options .

Se não quisermos que tabelas e chaves estrangeiras sejam geradas dessa maneira, podemos usar o misterioso "sexto símbolo".

O "sexto símbolo" cria um relacionamento usando colunas existentes, o que significa que você já incluiu as chaves estrangeiras necessárias em suas tabelas e criou as tabelas de junção necessárias (tabelas de mapeamento n:m). Como já criamos essas tabelas Join, não precisamos de relacionamentos n:m; apenas 1:n está disponível.

Quando tivermos todos os nossos relacionamentos definidos, nosso diagrama deve ficar assim:

Esteja ciente de que estamos usando a notação padrão do MySQL Workbench para os diagramas, mas você pode alterar isso em Notação de modelo/objeto e Notação de Modelo/Relação. Este é um exemplo do nosso modelo em notação clássica:

Neste ponto, nosso modelo está pronto e podemos gerar o SQL para criar o banco de dados MySQL.

Gerando SQL


Selecione File/Export/Forward Engineer SQL CREATE Script . Estamos a apenas três telas do assistente para gerar nosso arquivo!




Temos até a opção de revisar e editar o SQL gerado antes de salvá-lo:

E é isso. Clicando em finalizar, o script SQL será gerado e salvo. Agora, podemos usá-lo da maneira que desejarmos. Podemos carregá-lo usando o cliente mysql de linha de comando:

mysql> FONTE scriptName.sql

Ou podemos usar o MySQL Workbench para finalizar o trabalho, conectando ao nosso servidor MySQL e executando o script.

Conectando a um servidor MySQL


Selecione Banco de dados/Gerenciar conexões no menu e clique em NOVO .

Se você não quiser definir a senha aqui, ela será solicitada quando necessário. Clique em "Testar conexão" para verificar se seus parâmetros estão corretos e clique em fechar.

Agora, para carregar o script, usaremos o editor SQL. No menu principal selecione Database/Query Database; uma janela solicita que você selecione uma conexão e, em seguida, a guia do editor SQL é aberta.

Agora clique no ícone de raio para executar o script SQL, e seu banco de dados será gerado!

Também poderíamos ter gerado o banco de dados MySQL diretamente do modelo, sem referenciar o arquivo real, usando Database/Forward Engineer do cardápio; no entanto, acho útil gerar o script e usá-lo como desejo.