PI S8 DSW I DouglasARS: mudanças entre as edições

De IFSC
Ir para navegação Ir para pesquisar
imported>Douglas
imported>Douglas
Linha 524: Linha 524:
</tr>
</tr>
<tr>
<tr>
<td colspan="5">Fonte: http://help.scibit.com/Mascon/masconMySQL_Field_Types.html <br> http://help.scibit.com/Mascon/masconMySQL_Field_Types.html <br> http://dev.mysql.com/doc/refman/5.0/en/data-type-overview.html <br> http://dev.mysql.com/doc/refman/5.0/en/data-type-overview.html</td>
<td colspan="5">Fonte: <br>http://help.scibit.com/Mascon/masconMySQL_Field_Types.html <br> http://help.scibit.com/Mascon/masconMySQL_Field_Types.html <br> http://dev.mysql.com/doc/refman/5.0/en/data-type-overview.html <br> http://dev.mysql.com/doc/refman/5.0/en/data-type-overview.html</td>
</tr>
</tr>
</table>
</table>

Edição das 18h06min de 24 de novembro de 2015

Apresentação

Olá Estudante,

Estamos chegando ao final. Este será nosso último encontro da unidade curricular Desenvolvimento de Sistemas WEB I, espero encontrá-los numa próxima unidade, no próximo ano. Na semana que passou, mostramos mais conjunto de programas chamado XAMPP, formado pelos aplicativos MySQL, Apache, PHP, entre outros. Apresentamos também, a instalação do PostgreSQL e a sua ferramenta administrativa o pgAdmin3. Nesta reta final, vamos falar um pouco sobre modelagem de dados, com destaque para os tipos de dados que o banco de dados MySQL suporta. Assistam os vídeos, façam os exemplos utilizando, preferencialmente, o MySQL Workbench ou DBDesigner. Fiquem atentos aos prazos, a AO2 termina juntamente com esta última semana.

Bons estudos a todos!

Até quinta!

Prof. Douglas A.

Objetivo

  • Apresentar a modelagem de dados: modelo conceitual, modelo lógico e físico.
  • Apresentar os tipos de dados utilizados no MySQL.
  • Apresentar um passo a passo da geração do código SQL no DBDesigner e Workbench.

Vídeos

  1. Banco de Dados: https://www.youtube.com/watch?v=p0zCY9cKrJM
  2. Modelagem de Dados - Projeto de um Banco de Dados: https://www.youtube.com/watch?v=G-XOc8LVZIo

Textos

  1. LUIS.BLOG.BR: http://www.luis.blog.br/modelagem-de-dados-modelo-conceitual-modelo-logico-e-fisico.aspx
  2. LUIS.BLOG.BR: http://www.luis.blog.br/modelo-de-entidade-e-relacionamento-mer.aspx
  3. Tipos de Campos no MySQL: http://www.rcoli.com.br/2012/08/tipos-de-campos-no-mysql-saiba-como-escolher-o-tipo-correto/

Modelagem de dados

A modelagem de dados é uma técnica usada para a especificação das regras de negócios e as estruturas de dados de um banco de dados. Ela faz parte do ciclo de desenvolvimento de um sistema e é de vital importância para o bom resultado do projeto. Modelar dados consiste em desenhar o sistema de informações, concentrando-se nas entidades lógicas e nas dependências lógicas entre essas entidades.

Modelagem de dados ou modelagem de banco de dados envolve uma série de aplicações teóricas e práticas, visando construir um modelo de dados consistente, não redundante e perfeitamente aplicável em qualquer SGBD moderno.


Modelo conceitual

A modelagem conceitual basea-se no mais alto nível e deve ser usada para envolver o cliente, pois o foco aqui é discutir os aspectos do negócio do cliente e não da tecnologia. Os exemplos de modelagem de dados vistos pelo modelo conceitual são mais fáceis de compreender, já que não há limitações ou aplicação de tecnologia específica. O diagrama de dados que deve ser construído aqui é o Diagrama de Entidade e Relacionamento, onde deverão ser identificados todas as entidades e os relacionamentos entre elas. Este diagrama é a chave para a compreensão do modelo conceitual de dados. A Figura 1 mostra um exemplo simples de Diagrama de Entidade e Relacionamento.

Exemplo mer.jpg

Figura 1 - Diagrama de Entidade e Relacionamento.


Modelo lógico

O modelo lógico já leva em conta algumas limitações e implementa recursos como adequação de padrão e nomenclatura, define as chaves primárias e estrangeiras, normalização, integridade referencial, entre outras. Para o modelo lógico deve ser criado levando em conta os exemplos de modelagem de dados criados no modelo conceitual. A Figura 2 mostra um exemplo do diagrama de banco de dados gerado.

Exemplo bd.jpg

Figura 2 - Diagrama de Banco de Dados.

Modelo físico

No modelo físico fazemos a modelagem física do modelo de banco de dados. Neste caso leva-se em conta as limitações impostas pelo SGBD escolhido e deve ser criado sempre com base nos exemplos de modelagem de dados produzidos no item anterior, modelo lógico.

Conclusão

Os detalhes da modelagem mostrados são apenas exemplos práticos de modelagem. Existe outras abordagens que devem ser levadas em consideração, o assunto é extenso e nem sempre de fácil compreensão, mas com um pouco de prática fica mais fácil o entendimento.


Modelo de Entidade e Relacionamento (MER)

O modelo de entidade e relacionamento é o mais utilizado atualmente, devido a sua simplicidade e eficiência. Baseia-se na percepção de mundo real, que consiste em uma coleção de objetos básicos, chamados entidades e relacionamentos entre esses objetos. Você poderá usar ou não um software para modelagem de dados.

A modelagem de dados consiste em uma série de análises conceituais e lógicas para encontrar a melhor disposição possível de armazenamento e manutenção das informações no banco de dados. A modelagem envolve um profundo estudo de caso, seguido da análise de projeto, que pode ser dividida em duas etapas:

  • Análise de Entidades.
  • Análise de Relacionamentos.

Na análise de entidades o objetivo é identificar os elementos com algum significado próprio, tais como Clientes, Produtos, Pedidos, Locação, etc. A entidade pode ser algo concreto como Clientes e Produtos ou algo abstrato como Locação e Venda.

Na análise de relacionamentos o objetivo é definir como e quando as entidades se relacionam, isto é particularmente importante a fim de dar maior entendimento do problema.

Outro fator importante é o diagrama de entidade e relacionamento que representa gráficamente o modelo de entidade e relacionamentos, este diagrama pode ser feito com o uso de ferramenta de modelagem de dados ou usando algum programa gráfico. Os softwares para modelagem de dados são alternativas mais interessantes em função da produtividade, organização do seu diagrama de entidade e relacionamento e facilidade de modificações.

Vamos usar o exercício proposto no post (Modelagem conceitual: modelo conceitual de dados) para criar dele o modelo de entidade e relacionamento, isto será feito em duas etapas. Veremos nos posts (Usando a Análise de Entidade: Atributos simples, compostos e multivalorados) e depois no (Relacionamento entre entidades: tipos e cardinalidade).

Análise de Entidades

Entidade é aquele objeto existente no mundo real, com uma identificação distinta e significado próprio. São as coisas que existem no negócio, ou ainda, que descrevem o negócio em si. Se algo existe e proporciona algum interesse em manter dados sobre ele, isto caracteriza como uma Entidade do negócio.

Desta forma, podemos dizer que uma entidade será uma tabela em nosso banco de dados. Na verdade quando identificamos todas as entidades, estaremos definindo quais serão as tabelas que teremos que criar em nosso banco de dados.

Fulano de Tal, CPF nº 111.111.111-22, é uma entidade, uma vez que só pode existir uma única pessoa com o mesmo nome e CPF.

Em um banco de dados de uma empresa, por exemplo, são entidades: Cliente, Funcionário, Departamento, fornecedor, etc. Cada entidade representa objetos com as mesmas características. Um banco de dados, portanto, compreende uma coleção de conjuntos de entidades do mesmo tipo.

A análise de entidade e seus atributos é parte de um estudo maior, o chamado Modelo de entidade e relacionamento, onde são analisados também os relacionamentos existente entre entidades.


Atributos

São propriedades (características) que identificam as entidades. Uma entidade é representada por um conjunto de atributos. Os atributos podem ser simples, composto, multivalorado ou determinante.

Nome, endereço, telefone e cidade, por exemplo, são atributos da entidade Clientes. Enquanto que salário, cargo e departamento são atributos da entidade funcionários.

Existem quatro tipos de atributos: simples, composto, multivalorado e determinante

Atributo Simples

Não possui qualquer característica especial. A maioria dos atributos serão simples. Quando um atributo não é composto, recebe um valor único como nome, por exemplo e não é um atributo chave, então ele será atributo simples.

Atributo Composto

O seu conteúdo é formado por vários itens menores. Exemplo: Endereço. Seu conteúdo poderá ser dividido em vários outros atributos, como: Rua, Número, Complemento, Bairro, Cep e Cidade. Este tipo de atributo é chamado de atributo composto. Veremos mais de sua aplicação no post sobre normalização de dados.

Atributo Multivalorado

O seu conteúdo é formado por mais de um valor.

Exemplo: Telefone. Uma pessoa poderá ter mais de um número de telefone. É indicado colocando-se um asterisco precedendo o nome do atributo. O atributo multivalorado serão tratados com mais detalhes na normalização de dados.

Atributo Determinante

Identifica de forma única uma entidade, ou seja, não pode haver dados repetidos.

É indicado sublinhando-se o nome do atributo. Exemplo: CNPJ, CPF, Código do fornecedor, Número da matrícula, etc. Os atributos determinantes serão as chaves primárias no banco de dados e seu uso tem implicações na normalização de dados.

Análise de Relacionamentos

Relacionamento entre entidades é o tipo de ocorrência existente entre entidades e aplicáveis no processo de modelar dados. Entender isso é importante pois um modelo consistente é a base para um banco de dados de sucesso. O símbolo que representa o relacionamento no Modelo de Entidade e Relacionamento (MER) é um losango com o nome do relacionamento escrito no seu interior, como no exemplo a seguir.

Fig3 PI S8.jpg


Em um modelo de entidade e relacionamento, nem todas as entidades serão relacionadas, há casos em que não há ligação entre elas, nestes casos consideramos como entidades isoladas. Embora não seja tão comum, é importante levar em conta esta possibilidade. Mas quando as ligações existirem, elas serão classificadas de acordo com os tipos a seguir. Tipos de relacionamento

Existem três tipos de relacionamento entre entidades:

  • um-para-um
  • um-para-muitos
  • muitos-para-muitos

Relacionamento um-para-um

O relacionamento um-para-um é usado quando uma entidade A se relaciona com uma entidade B e vice-versa.

Este relacionamento é representado pelo sinal: 1:1

Veja o exemplo:

Fig4 PI S8.jpg


Relacionamento um-para-muitos

O relacionamento um-para-muitos é usado quando uma entidade A pode se relacionar com uma ou mais entidades B.

Este relacionamento é representado pelo sinal: 1:N

Veja o exemplo:

Fig5 PI S8.jpg


Relacionamento muitos-para-muitos

O relacionamento muitos-para-muitos é usado quando várias entidades A se relacionam com várias entidades B.

Este relacionamento é representado pelo sinal: N:N ou N:M

Veja o exemplo:

Fig6 PI S8.jpg


Cardinalidade

A cardinalidade é um conceito importante para ajudar a definir o relacionamento, ela define o número de ocorrências em um relacionamento.Para determinar a cardinalidade, deve-se fazer a pergunta relativa ao relacionamento em ambas as direções.

Um departamento possui quantos empregados?

- no mínimo 1 e no máximo N.

Um empregado está alocado em quantos departamentos?

- no mínimo em 1 e no máximo em 1

Somando-se as cardinalidades, definimos o resultado final do relacionamento, ou seja, 1:N.

Tipos de Campos no MySQL

O desenvolvedor inexperiente costuma confundir bastante os tipos de campo da linguagem utilizada (PHP por exemplo) com os tipos que o banco pode armazenar. Um exemplo clássico dessa confusão é o booleano que é automaticamente convertido de true para 1 e false para 0 (zero). Além disso, há o clássico erro de armazenamento de CPF em campo numérico o que faz com que todos os zeros a esquerda se percam.

A tabela abaixo mostra os campos do MySQL para servir como guia para implementação do banco de dados e sua aplicação.

Você deve identificar qual o tipo de variável que irá armazenar: número, texto, binário, data, lista ou combinação destes. Em seguida estimar o tamanho do campo e se será variável ou fixo. O MySQL costuma preencher campos texto não variáveis com espaços em branco. Em seguida, verificar se permitirá nulo ou não, se é uma chave candidata, primária, estrangeira, índice ou único.

Não há uma regra fixa para saber como os bancos deverão ser implementados, mas tenha sempre em mente que neste caso, mais é melhor. Ou seja, é melhor sobrar espaço do que ter uma informação inserida com pedaços faltando. Já viu alguém nascer no “Rio de Jane” pois o desenvolvedor não colocou o campo com o tamanho correto?!

Observações
  • O tamanho do campo para tipos numéricos não afeta o intervalo de valores que pode ser armazenado na coluna. Colunas definidas como TINYINT (1) ou TINYINT (20) podem armazenar exatamente, os mesmos valores. Em vez disso, para inteiros, o tamanho determina a largura do campo, para casas decimais, o tamanho é o número total de dígitos que pode ser armazenado.
  • Muitos dos tipos de dados têm nomes sinônimos: INT e INTEGER, DEC e DECIMAL, etc
  • O tipo de campo TIMESTAMP é automaticamente definido com a data e hora quando um INSERT ou UPDATE ocorre, mesmo se nenhum valor for especificado para esse campo . Se uma tabela possui múltiplas colunas TIMESTAMP, somente a primeira será atualizada quando um INSERT ou UPDATE é realizado.
  • MySQL também tem diversas variantes para os tipos de texto que permitem o armazenamento de dados binários. Estes tipos são BINARY, VARBINARY, TINYBLOB, MEDIUMBLOB, e LONGBLOB. Esses tipos são usados para armazenamento de arquivos ou dados criptografados.


Tipos Numéricos
Tipo Uso Tamanho
Atributo MIN MAX
TINYINT Um inteiro muito pequeno Signed: -128 127
Unsigned 0 255
SMALLINT Um inteiro pequeno Signed: –32768 32767
Unsigned 0 65535
MEDIUMINT Um inteiro de tamanho mediano Signed: –8388608 8388607
Unsigned 0 16777215
INT or INTEGER Um inteiro de tamanho normal Signed: –2147483648 2147483647
Unsigned 0 4294967295
BIGINT Um inteiro de temanho grande Signed: –9223372036854775808 9223372036854775807
Unsigned 0 18446744073709551615
FLOAT Um pequeno número de ponto flutuante (precisão simples) Signed –3.402823466E+38 –1.175494351E-38, 0
1.175494351E-38 3.402823466E+38
Não pode ser unsigned -
OBS Se o número de decimais não for especificado ou for <= 24 será de precisão simples
DOUBLE,

DOUBLE PRECISION,

REAL
Um número de ponto flutuante de tamanho normal (precisão dupla) Signed -1.7976931348623157E+308 -2.2250738585072014E-308, 0
2.2250738585072014E-308 1.7976931348623157E+308
Não pode ser unsigned -
OBS Se o número de decimais não for especificado ou for 25 <= Decimals <= 53 será de precisão dupla
DECIMAL,
NUMERIC
Um número de ponto flutuante descompactado . Signed Se comporta como um campo CHAR: “descompactado” significa que o número é armazenado como uma string, usando um caractere para cada dígito do valor. O ponto decimal e, para números negativos, o sinal ‘-’ não é contado. Se o decimal for 0, os valores não terão ponto decimal ou parte fracionária. O alcance máximo de valores decimais é o mesmo que para o DOUBLE, mas a faixa atual para um campo DECIMAL dado pode ser limitado pela escolha de comprimento e decimais.
Não pode ser unsigned -
OBS Se Decimais é deixado de fora ele é definido como 0. Se o comprimento é deixado de fora ele é definido como 10. Note que no MySQL 3,22 o comprimento inclui o sinal eo ponto decimal
Campos de Datas
Formato MIN MAX
DATE Data ‘1000-01-01’ ‘9999-12-31’
OBS Formato: ‘YYYY-MM-DD’
DATETIME Data e horário ‘1000-01-01 00:00:00’ ‘9999-12-31 23:59:59’
OBS Formato: ‘YYYY-MM-DD HH:MM:SS’
TIMESTAMP Timestamp ‘1970-01-01 00:00:00’ aproximadamente 2037
OBS Formato: YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD ou YYMMDD, dependendo se M é 14 (ausente), 12, 8 ou 6, podendo ser strings ou números.
Este tipo é recomendável para instruções de INSERT ou UPDATE pois é automaticamente marcado com os valores da operação mais recente quando não informado.
TIME A time ‘-838:59:59’ ‘838:59:59’
OBS formato: ‘HH:MM:SS’, podem ser strings ou números
YEAR Anos com 2 ou 4 digitos. O padrão é 4 digitos 4 digitos 1901 2155 e 0000
2 digitos 1970 2069
OBS Formato: YYYY
podem ser strings ou números.
Campos Texto
MIN MAX
CHAR String de tamanho fixo. Sempre é completada com espaços a direita até o tamanho definido 1 255 caracteres
OBS Espaços excessivos são removidos quando o valor é trazido.Os valores são ordenados e comparados ignorando caixas altas e baixas de acordo com a codificação padrão, a menos que seja fornecido uma chave binária.
VARCHAR String de tamanho variável 1 255 caracteres
OBS Os valores são ordenados e comparados ignorando caixas altas e baixas de acordo com a codificação padrão, a menos que seja fornecido uma chave binária.Nota: Espaços execessivos são removidos quando o valor é inserido.
TINYTEXT 0 255 (2^8 – 1) caracteres
TEXT 0 65535 (2^16 – 1) caracteres
MEDIUMTEXT 0 16777215 (2^24 – 1) caracteres
LONGTEXT 0 4294967295 (2^32 – 1) caracteres
Dados Binários
TINYBLOB 0 255 (2^8 – 1) caracteres
BLOB 0 65535 (2^16 – 1) caracteres
MEDIUMBLOB 0 16777215 (2^24 – 1) caracteres
LONGBLOB 0 4294967295 (2^32 – 1) caracteres
Listas
MIN MAX
ENUM Enumeração String que pode conter apenas um valor ou zero 65535 valores distintos.
SET Lista String que pode conter zero ou mais valores 64 itens
Fonte:
http://help.scibit.com/Mascon/masconMySQL_Field_Types.html
http://help.scibit.com/Mascon/masconMySQL_Field_Types.html
http://dev.mysql.com/doc/refman/5.0/en/data-type-overview.html
http://dev.mysql.com/doc/refman/5.0/en/data-type-overview.html

Semana Final

Nesta última semana mostramos ...

Foi muito bom estar com vocês!

Abraço a todos!

Nos vemos em 2016!

Prof. Douglas A.

Referências

[1]



<< <>