Buscar

Projeto Lógico e Tipos de Dados MySQL

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

NÍVEL Graduação 
DISCIPLINA Banco de Dados 
PROFESSOR Martin José Fagonde Morães 
 
 
 
 
 
 
 
 
 
 
Conversa Inicial 
 
 
Olá! Seja bem-vindo ao quinto encontro da disciplina Banco de Dados! 
 
Na aula de hoje, iremos trabalhar com o chamado projeto lógico, no qual daremos enfoque para a 
implementação e manipulação dos dados, além de trabalharmos também com a abordagem direta, que 
envolverá o SGBD MySQL, entidades X tabelas, relacionamentos e cardinalidades. 
 
Pronto para começar? Vamos lá! 
 
 
 
Contextualizando 
 
 
É no projeto lógico que se organiza o resultado da modelagem conceitual, sob uma perspectiva que o 
SGDB entenda e possa trabalhar com os dados. 
O SGDB escolhido foi o MySQL, que é relacional. Sendo assim, o modelo lógico que for construído deve 
ser um modelo que atenda a abordagem relacional. 
 
Nesta unidade, vamos trabalhar a conversão do modelo conceitual apresentado no esquema a seguir 
(DER – Rede de Mensagens). Vamos construir um diagrama com a ferramenta MySQL Workbench, o 
diagrama resultante apresenta todas as informações que constam em um DER e todas as informações 
necessárias para o modelo lógico. 
 
 
 
 
Pesquise 
Projeto Lógico e Abordagem Direta 
Tipos de dados - MySQL 
Vamos começar conhecendo os principais tipos de dados (domínios) disponibilizados no SGDB 
MySQL. Confira a seguir alguns termos importantes dos dados MySQL: 
Unsigned - É uma instrução utilizada juntamente com os tipos de dados (domínios) numéricos 
para definir que o campo em questão não armazenará valores negativos. Isto faz com que aumente a 
capacidade do campo em armazenar valores positivos. 
Signed - Por padrão, todos os tipos (domínios) numéricos são signed. Esta instrução indica que o 
campo armazenará valores negativos. 
Zerofill - É uma instrução utilizada em conjunto com os tipos de dados (domínios) numéricos 
para definir que o campo em questão terá as casas da esquerda preenchidas com zero. Por exemplo: 
 
 
se a capacidade do domínio definido é de três casas e, o valor armazenado for de uma casa, as outras 
duas casas que estão à esquerda serão preenchidas com zero. 
Null - É uma instrução utilizada juntamente com os tipos de dados (domínios) para definir que o 
campo pode ficar sem receber um valor. 
Not null - É uma instrução utilizada juntamente com os tipos de dados (domínios) para definir 
que o campo não pode ficar sem receber um valor. 
 
 
 
 
 
 
 
Tipos numéricos inteiros 
 
SERIAL 
Um campo que for definido com o tipo “serial” receberá as definições informando que o domínio 
será BIGINT, sem sinal, não pode ser null e o seu valor será automaticamente gerado e não se 
repetirá. 
 
 
 
 
 
 
 
 
Tabela resumo de inteiros 
A tabela a seguir mostra os principais domínios (tipos) inteiros do MySQL, com a respectiva 
capacidade. 
 
Tipos numéricos ponto flutuante 
Ao definir um campo do tipo numéricos de ponto flutuante deve indicar a precisão e a quantidade 
de casas decimais. A precisão é o total de casas, incluindo as decimais. 
 
 M – Indica o número total dígitos (precisão). 
 D – Indica a quantidade de casas decimais, ou seja, depois da vírgula. Se D for zero (0) não terá 
casas decimais. 
 
Exemplo: salário decimal (8,2). => 999999,99 
 Significa que salário será um número com um valor no máximo de oito caracteres 
sendo que dois destes serão de casa decimais. 
 
 
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] 
 
O valor máximo de M é 65, se omitido, o valor padrão é 10. 
Valor máximo para D é 30, se omitido, o valor padrão é zero (0). 
 
São sinônimos para o tipo DECIMAL os tipos: 
 DEC[(M[,D])] [UNSIGNED] [ZEROFILL], 
 NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL], 
 FIXED[(M[,D])] [UNSIGNED] [ZEROFILL] 
 
 
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] 
 
Permite valores de 3.402823466E+38 a -1.175494351E-38. 
Se M e D forem omitidos será armazenado até a capacidade permitida pelo hardware. 
Precisão de 7 casas decimais, aproximadamente. 
 
Tipo BOOL, BOOLEAN 
O tipo boolean é sinônimo para TINYINT(1). O valor zero (0) é considerado “false” e um valor 
diferente de zero (0) é considerado “true”. 
 
 
 
 
 
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] 
 
Permite valores de -1.7976931348623157E+308 a -2.2250738585072014E-308. 
Se M e D forem omitidos será armazenado até a capacidade permitida pelo hardware. 
Precisão de 15 casas decimais, aproximadamente. 
São sinônimos para o tipo decimal os tipos: 
 DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL] 
 REAL[(M,D)] [UNSIGNED] [ZEROFILL] 
 
Data e Horas 
 
Preste atenção no tipo TIMESTAMP, pois leva em consideração o UTC – Coordinated Universal 
Time, isto significa que a data e o horário armazenado serão convertidos conforme a configuração UTC 
da máquina em que está rodando. Confira a seguir uma tabela com os tipos de data e hora: 
 
 
 
Tipos String 
Os campos destes tipos armazenam todos os tipos de caracteres e não permitem operações 
aritméticas com seus conteúdos. 
L - Representa o tamanho em byte padrão para o tipo. 
M - Representa a quantidade de caracteres definida para a coluna e para os tipos não binários, 
para os tipos binários representa a quantidade de bytes. 
 
 
 
 
 
 
 
Estudo de Caso: Rede de Mensagens 
 
Vamos converter o DER da modelagem Rede de Mensagens em um modelo lógico, utilizando a 
ferramenta MySQL Workbench. 
O diagrama que será gerado na criação do modelo lógico atende as especificações da abordagem 
ER e as especificações da abordagem relacional. Com frequência estes diagramas são referenciados 
também como DER. 
 
 
 
Os relacionamentos estão indicados com linhas e as cardinalidades com a notação de Martin e 
Finkelstein, denominada “pés de galinha”, veja a equivalência entre as notações de cardinalidade na 
Erro! Fonte de referência não encontrada. 
 
 
Na notação Martin e Finkelstein o símbolo mais próximo a tabela é a cardinalidade máxima e o 
símbolo mais interno é a cardinalidade mínima. 
 
 
Convertendo a entidade Usuário 
A entidade é convertida em tabela, os atributos em campos, o atributo identificador é convertido 
em campo chave e os nomes de cada elemento são adequados às especificações dos caracteres aceitos. 
Observe a seguir os esquemas que demonstra a entidade usuário para a tabela usuário. 
 
 
Convertendo a entidade Mensagem 
A entidade é convertida em tabela, os atributos em campos, o atributo identificador é convertido 
em campo chave. Os nomes de cada elemento são adequados às especificações dos caracteres aceitos. 
Os atributos imagem e vídeo serão armazenados no campo “iva”, um acrônimo para imagem, 
vídeo e áudio. Na especificação do modelo conceitual não é indicada a utilização de áudio. Considerando 
que o tipo que definimos para o campo comporta qualquer tipo de arquivo, vamos considerar no 
acrônimo o “a”. Clique para conferir a exemplificação: 
 
 
 
 
 
 
 
 
 
O relacionamento entre Usuários e Mensagens 
O relacionamento “envia” que é realizado entre usuário e mensagens, indica uma cardinalidade máxima 
de 1:n. Para esta situação, a recomendação é adicionar uma coluna em mensagem com o objetivo de ser 
uma chave estrangeira referenciando o usuário que enviou a mensagem. 
Na figura que será apresentada no botão a seguir, foi criada a coluna “usuario_idusuario” com a 
indicação de chave estrangeira. A indicação do relacionamento está apresentada pela linha que liga as 
duas tabelas e a representação dacardinalidade que estamos usando é a notação “pé de galinha”. 
 
 
 
 
 
 
 
 
Comentários da mensagem 
 
Vamos converter a entidade “Comentários” na tabela “comentario”. Para o atributo “gostou” 
definimos o campo “gostou” do tipo boolean. O tipo boolen em seus três estados, será aplicado “true” 
para gostou, “false” para não gostou e “null” para quando não houver manifestação. 
 
 
 
 
Relacionamentos com “comentariodo” 
Os relacionamentos e as cardinalidades se mantêm e seguem os mesmos princípios. 
Considerando que as duas cardinalidades máximas são 1:n, foram criados dois campos para serem chaves estrangeiras, 
uma para comentário e outra para o usuário que fez o comentário do comentário. Confira: 
 
 
 
Identificando os usuários do mesmo grupo 
O relacionamento entre usuários no qual um ou vários usuários podem estar relacionado à vários outros 
usuários nos dá um relacionamento com cardinalidade n:n, o mais indicado será a criação de uma nova 
tabela, a seguir, vamos criar a tabela “grupo”. 
Todo usuário tem a obrigatoriedade de estar em um grupo, ou seja, seu próprio grupo. Observe: 
 
 
 
 
 
 
 
Trocando ideias 
 
Agora, que você acabou de conferir a criação de um modelo lógico, converse com profissionais da área e 
identifique as notações de cardinalidade e os efeitos das chaves estrangeiras. 
Compartilhe com colegas, através do fórum da disciplina, as suas observações e conclusões quanto às 
chaves e cardinalidades nas situações que você identificou. 
 
 
Na Prática 
 
No material online, você poderá acompanhar as videoaulas preparadas pelo professor Martin, não deixe 
de conferir! 
 
Síntese 
 
O modelo lógico permite uma visualização clara e limpa, mantendo as representações das cardinalidades, 
os tipos de dados para cada campo, as tabelas/entidades existentes e outros recursos fundamentais. 
Esta notação também permite uma visualização com as características de um DER. 
Os tipos de dados do MySQL são muito semelhantes a outros SGDB, com isto, o modelo lógico construído 
pode ser implementado em diferentes SGDB. 
 
Com habilidades bem desenvolvidas e utilizado ferramentas como MySQL WorkBench, muitos 
profissionais implementam a modelagem conceitual e lógica na mesma etapa, obtendo resultados muito 
bons! 
 
Até a próxima (e última) aula! 
 
 
Rota Referências 
 
HEUSER, C. A. (Org.). Projeto de Banco de Dados. 6. ed. Porto Alegre: Bookman, 2009. xii, p. 282. 
KROENKE, D. M. (Org.). Banco de Dados: Fundamentos, Projeto e Implementação. 6. ed. Rio de 
Janeiro: LCT, 1999.

Continue navegando

Outros materiais