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 184: Linha 184:


Somando-se as cardinalidades, definimos o resultado final do relacionamento, ou seja, 1:N.
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.
Portanto coloco abaixo a tabela com os campos do MySQL para que sirva de um guia de implementação do banco de dados de sua aplicação.
Lembro ainda que antes de mais nada 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.


=Semana Final=
=Semana Final=

Edição das 17h38min 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.

Portanto coloco abaixo a tabela com os campos do MySQL para que sirva de um guia de implementação do banco de dados de sua aplicação.

Lembro ainda que antes de mais nada 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.

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]



<< <>