DFD


  • Abaixo, a versão 2 do Diagrama de Fluxo de Dados para o LibraryFree:



  • A partir dos depósitos definidos no DFD, podemos gerar um DER:


DER - Diagrama Entidade-Relacionamento


  • Quando pensamos em criar o projeto de um sistema, devemos pensar em como os dados serão armazenados e podemos fazer isso a partir dos depósitos desenhados no DFD.
  • Devemos começar imaginando como será a estrutura desses dados, ou melhor, como eles ficarão armazenados de uma forma consistente e segura,. Sendo assim, próximo passo é definir a representação diagramática do problema.
  • Na evolução da Ciência da Computação, foram feitos estudos e pesquisas e dentre muitas propostas, destacam-se métodos que nos auxiliam a prover uma estrutura concisa, com maior correção e facilidade no tratamento dos dados. Para a representação formal, dentre os modelos propostos, destaca-se o MER - Modelo Entidade-Relacionamento, um padrão de modelagem de objetos, como a UML - Unified Modeling Language.
  • MER, DER - Diagrama Entidade-Relacionamento ou ERA - Entidade-Relacionamento e Atributo foi criado por Peter Chen em 1976 e desde então tem servido aos profissionais que lidam com informação como um método eficiente para representar graficamente a estrutura de armazenamento. Atualmente, ele é bastante usado como primeiro passo na representação da estrutura de um Banco de Dados.
  • Projetos que excluem esse processo podem apresentar erros e falhas, facilmente identificáveis no início, e ao longo do desenvolvimento podem causar inúmeros problemas. Sua estrutura é desenhada de forma clara e simples, possibilitando representar os dados do mundo real como objetos denominado Entidades ou Conunto de Entidades.


  • Modelo Relacional
    • O modelo relacional usa um conjunto de tabelas para representar os dados e as relações entre eles. Cada tabela possui diversas colunas e cada coluna possui um nome único. O modelo relacional é um exemplo de modelo baseado em registros e recebem esse nome porque o banco de dados é estruturado em registros de formato fixo de vários tipos. Cada tabela contém registros de tipo específico. Cada tipo de registro define um número fixo de campos ou atributos. As colunas da tabela correspondem aos atributos do tipo de registro.
    • O modelo de dados relacional é o modelo de dados mais usado e está presente na grande maioria dos bancos de dados do mundo.


  • Tabelas
    • Cada tabela possui várias colunas e cada uma tem um único nome. Cada linha da tabela é denominada de atributo e deve ter um nome começando com uma letra maíúscula e as demais minúsculas. Se for um nome composto, a segunda palavra tem a letra inicial maiúscula e deve ser escrita junto com a primeira. Cada atributo tem um tipo de dado a ser considerado e teremos a seguinte regra:
    • Valor texto: String, S ou VarChar
    • Valor de um caracter: C ou Char
    • Valor numérico inteiro: Int ou I
    • Valor numérico fracionário: Float ou F
    • Valor booleano: B ou Bool
    • Mídia (Vídeo, Imagem, etc): M ou Media


  • Exemplo:


Erro ao criar miniatura: Arquivo não encontrado


  • Considerações:
    • Cada tabela tem um nome que tenta mostrar claramente seu conteúdo
    • Sugere-se não colocar acentuação como no exemplo
    • Quando o atributo for data, pode-se designar o tipo como Date
    • Quando o atributo for data e hora, pode-se designar o tipo como Timestamp
    • Quando for texto, pode-se delimitar o tamanho da palavra
    • Campos obrigatórios podem ter a informação Not Null


  • Chaves:
    • São as chaves para o relacionamento entre entidades, ou tabelas. Assim, haverá, na tabela relacionada, uma referência a uma chave primária (que será, na tabela relacionada, a chave estrangeira).
    • PK - Chave primária, ou primary key:
      • É o conceito mais básico relacionado à organização em um banco de dados. A chave primária é um atributo ou conjunto de atributos que identificam unicamente uma instância em uma entidade, e que não podem receber um valor nulo)
    • FK - Chave estrangeira ou foreign key:
      • Atributo correspondente à chave primária de outra relação, base para a integridade referencial
    • Integridade referencial:
      • PK (Primary Key) representa a chave primária de uma tabela (obrigatória) e FK (Foreign Key) representa uma chave estrangeira, onde o valor do atributo deve ser correspondente a uma chave primária da tabela a qual está referenciando, ou ser nulo, quando não for obrigatório.


DER - LibraryFree


Erro ao criar miniatura: Arquivo não encontrado


Relacionamento



  • Um relacionamento ou associação representa um conjunto de ligações entre entidades que necessitam ser guardadas pelo sistema



  • A associação é caracterizada pela conjunção dos atributos identificadores das entidades envolvidas



  • Cada relacionamento é definida por:
    • Substantivo + relação + Substantivo



Chaves



Chave Primária


  • Atributo usado como identificador do item da entidade, como por exemplo um produto que possui um código de barras que o difere dos demais produtos
  • Esse código de identificação deve ser único
  • Exemplos:
    • matricula
    • placa
    • cpf
    • email




Chave Estrangeira


  • Responsável pelo relacionamento entre duas entidades, como por exemplo, um produto que se relaciona com categoria deve conter como chave estrangeira o código (chave primária) da categoria a qual ele pertence
  • Permite que a partir dela se chegue na chave primária de outra entidade.
  • Exemplos:
    • cidade na Entidade Pessoa
    • professor na Entidade Disciplina
    • medico na Entidade Consulta
    • banco na Entidade movimento-conta




Cardinalidade


  • No DER podemos completar as associações com a sua cardinalidade.
  • A cardinalidade define os graus de uma associação:





Relacionamento um-para-um (1:1)



  • Indica que uma única ocorrência de uma entidade pode se relacionar com apenas uma única ocorrência de outra entidade.



  • Este tipo de relacionamento é raro (no mundo cotidiano)



  • Exemplo: MARIDO (1) possui (1) ESPOSA







  • Exemplos de Maridos e suas respectivas Esposas







  • Uma forma interessante de armazenar:




  • Cada linha de uma tabela se relaciona facilmente com a linha de outra





Relacionamento um-para-muitos (1:N ou 1:M)



  • Indica que uma ocorrência de uma entidade pode se relacionar com muitas ocorrências de outra entidade


  • No entanto, a recíproca não é verdadeira


  • Este tipo de relacionamento é o mais encontrado








  • Uma situação comum: Um pai tem vários filhos







Relacionamento muitos-para-muitos (N:M)



  • Indica que várias ocorrências de uma entidade podem se relacionar com muitas ocorrências de outra entidade



  • Geralmente, um relacionamento desse tipo pode ser convertido e simplificado pela criação de uma entidade intermediária (do tipo associativa) e de dois relacionamentos do tipo 1:N (um-para-muitos)



  • Exemplo:
    • Sistema de compras: Um cliente pode comprar vários produtos, e um produto pode ser comprado por vários clientes
    • Nesse caso, existe a necessidade da implementação de uma entidade fraca entre as duas entidades



  • Essa entidade é chamada de entidade fraca pois sua chave primária é formada por duas chaves estrangeiras



  • Nesse caso, as chaves estrangeiras poderão se repetir, mas o conjunto delas duas nunca irá se repetir, formando a chave primária








  • Outra situação comum: Armazenar informações sobre professores e suas disciplinas.
  • Temos que levar em consideração duas premissas:
    • Um professor pode ministrar mais de uma disciplina
    • Uma disciplina pode ter mais de um professor







  • Essas condições forçam a ter uma segunda tabela para manter os relacionamentos acima.






Exercícios



  • Descrever cada Depósito de Dados com os principais atributos envolvidos e escolher atributo chave para cada conjunto de entidades abaixo:
  1. Funcionário = {Nome + Endereço + Salário + Data-ingresso}
  2. Cliente = {Nro-CPF + Nome + Endereço + Data-Nasc}
  3. Aluno = {Matrícula + Nome + Sexo + Data-nasc.}
  4. Dependente-Funcionário = {Matrícula-Func + Nome-dep + Data-nasc }
  5. Benefícios = {Matrícula-Func + CodBeneficio + Data-benef}
  6. Notas = {Matrícula + Disciplina + Sem + Notas}
  7. Pedido = {NroPedido + Cliente + DataPed + Produto}
  8. Conta = {nro-conta + saldo + juro + período}