Programação

segunda-feira, 23 de fevereiro de 2026

MODELO RELACIONAL e NORMALIZAÇÃO

         MODELO RELACIONAL 

O modelo relacional de Bases de Dados é um dos modelos mais utilizados atualmente pois é adotado pela maioria dos SGBDcomo MySQL, PostgreSQL, Oracle Database e SQL Server, entre outros.

  • Desenvolvido por Edgar F. Codd, na década de 1970

📌 Definição

Modelo Relacional de Bases de Dados armazena organiza os dados em tabelas (relações), que se relacionam entre si através de chaves primárias (PK) e estrangeiras (FK)


                            Tabela ALUNOS da entidade ALUNO


📌CARACTERÍSTICAS 
  • os dados são armazenados em tabelas (linhas e colunas)
  • Cada tabela representa uma entidade do mundo real (por exemplo: AlunoProdutoConsulta
  • Cada linha corresponde a um registo (tuplo)
  • Cada coluna/campo corresponde a um atributo.
  • utiliza chaves primárias para identificar de forma única cada registo da tabela
  • utiliza chaves estrangeiras para criar relações entre as tabelas
  • Permite a manipulação dos dados através da linguagem SQL.


            Relacionamento da Tabela ALUNOS com a Tabela CURSOS

📌 Vantagens do modelo relacional

  • Boa organização dos dados - Os dados são estruturados em tabelas (ou relações), facilitando o entendimento e a gestão das informações.

  • Redução da redundância de dados - Evita a duplicação de informações, economizando espaço e prevenindo inconsistências.

  • Garante a integridade e consistência dos dados – Regras como chaves primárias e estrangeiras garantem que os dados permaneçam corretos e confiáveis.

  • Facilita a pesquisa e atualização da informação - A linguagem SQL permite consultas complexas, além de inserções, alterações e exclusões de dados de forma eficiente.

  • Permite segurança e controlo de acessos – É possível definir quem pode ler, inserir ou alterar informações, garantindo proteção e privacidade dos dados.

  • Amplamente utilização - É o modelo mais adotado em sistemas atuais, com grande suporte de ferramentas e profissionais especializados.


    🔹 Estrutura das tabelas 

🧠 Nome da tabela: deve refletir os dados que ela guarda

TABELA:    Estrutura bidimensional que armazena dados de uma entidade.

LINHA ou REGISTO:  Representa uma ocorrência específica de uma entidade (linha de dados)

CAMPO ou COLUNA: representa as características/ propriedades (atributoda entidade.

DOMÍNIO: Define os valores permitidos para um atributo.    

(ex: no campo IdCurso,  os domínios são os valores: 290 , 122 ,etc  )


🔑 Chave Primária (Primary Key - PK)
✅ Definição
  Campo (ou conjunto de campos) que Identifica de forma única cada registo de uma tabela.

✔️ Características

  • Não pode repetir valores
  • Não pode ser nula (vazia)
  • Existe apenas uma PK por tabela

🔗 Chave Estrangeira (Foreign Key – FK)

Definição

Campo que liga uma tabela a outra, referenciando a chave primária de outra tabela.

✔️ Serve para:

  • criar relações entre tabelas
  • manter integridade dos dados

🔑 Chave Candidata (Candidate Key)

✅ Definição:

É qualquer campo (ou conjunto de campos) que identificar de forma única cada registo de uma tabela e que pode ser selecionado para ser a chave primária.

👉 EXEMPLO: 

Na tabela Alunos podemos ter vários campos podem ser candidatos a PK:   NProcesso, NIF, CC

Deve escolher a que melhor representa a respetiva tabela para ser a chave primária


🔑 Chave Composta (Composite Key)

✅ Definição:

👉 É uma chave primária formada por dois ou mais campos, cuja combinação identifica de forma única cada registo de uma tabela.

Exemplo:

 É o caso mais comum.

Tabela Inscrições

NProcesso        IdDisciplina
123
123
          SI
          OEAG      
👉 Assim, a  chave primária é formada por 2 campos (chave composta).
    🔑 PK = (NProcesso + idDisciplina)
Atualmente, usa-se pouco a chave composta, sendo substituída um campo único (chave artificial)
 🔑 PK = IdInscricao (auto-incremento)


    • NORMALIZAÇÃO
    • Normalização é o processo de organizar os dados em uma Base de Dados Relacional para:

      • evitar redundância (repetição de dados)

      • evitar inconsistências

      • facilitar manutenção e integridade

      Deve ser aplicado um conjunto de Regras para atingir esses objetivos 


    • 📊 As Formas Normais

    • 🔹 1ª Forma Normal (1FN)
    • Regra:

    • Não pode haver multivalores dentro de uma célula.

    • Cada campo/coluna deve ter apenas um único valor (atómico)

    • Se houver atributos com valores compostos (ex: Endereço) devem dividir atributos em valores atómicos

    • Se houver atributos com valores multivalores devem colocá-los em nova tabela e relacioná-la com a anterior.

    • 🔹 2ª Forma Normal (2FN)
    •                        Regra:
  • -Deve estar na 1FN 
    - todos os campos não-chave devem depender da chave primária.

    A 2FN só é um problema quando a tabela tem chave primária composta

  •  

    • 🔹 3ª Forma Normal (3FN)
    • Regra:

      -Deve estar na 2FN
      - não existem dependências transitivas
      (atributo não pode depender de outro atributo que não seja chave)



terça-feira, 18 de novembro de 2025

Modelação de dados



MODELO CONCEPTUAL  - 
MODELO LÓGICO -- MODELO FÍSICO 







  
 SGBD  - Sistema de Gestão de Base de Dados - SOFTWARE de Gestão de Bases de Dados (representado por um cilindro). Podemos ter SGBD:

    • SGBD Relacional   
    • SGBD orientado  objetos


 Num SGBD relacional:

   Uma Base de Dados  é um conjunto de dados armazenados em  tabelas relacionadas entre si através de chaves.

  • Cada tabela tem colunas (campos) e linhas (registos)

  • Tabelas podem ligar-se entre si através de chaves primárias e chaves estrangeiras

  • geralmente SQL (Structured Query Language) 


Exemplo: Tabela Alunos com os respetivos 6 campos e 3 registos

 


Registo é uma linha de uma tabela que contém todos os dados referentes a um único elemento da entidade.


Estrutura da tabela (nome dos campos e tipo de dados) em SQL

                          


Num SGBD Relacional os DADOS são ARMAZENADOS em várias tabelas relacionadas entre si

Os retângulos representam as tabelas (onde os dados estão armazenados). As tabelas estão relacionadas entre si.





SGBD Relacional (MariaDB) 
que contém a Base de Dados bdfutebol constituída por a tabela jogadores e tabela Clubes


Exemplos de SGBD relacionais grande porte

  • MySQL      (médio porte)

  • MariaDB       (médio porte)

  • PostgreSQL   (médio porte)

  • Microsoft SQL Server

  • Oracle Database

  • DB2

🔧 Para que são utilizados os SGBD de grande porte?

 Principalmente para:
  • 👥 Muitos utilizadores em simultâneo
    Centenas ou milhares de pessoas acessam o sistema ao mesmo tempo

  • 📦 Grandes volumes de dados
    Milhões ou bilhões de registos

  • 🔒 Alta segurança
    Controle de acesso de utilizadores, permissões, criptografia, auditoria

  • 🔄 Alta disponibilidade
    Sistemas que não podem parar (24horas/7dias)

  • Alto desempenho
    Consegue processar consultas complexas rapidamente

  • 🔁 Transações críticas
    Garantia de integridade dos dados, rollback - desfaz operações em caso de erro

🏢 Exemplos de uso

SGBDs de grande porte são usados em:

  • 🏦 Bancos e sistemas financeiros

  • 🛒 E-commerce (Amazon, Mercado Livre)

  • ✈️ Companhias aéreas (reservas e passagens)

  • 🏥 Hospitais (prontuários eletrónicos)

  • 🏛️ Sistemas governamentais

  • 📡 Telecomunicações

  • 📱 Aplicações web e mobile em larga escala


Exemplos de SGBD relacionais pequeno porte (desktop)

  • Microsoft Access 
            - O Microsoft Access é um SGBD relacional que utiliza linguagem SQL

            - oferece interface gráfica (tabelas, consultas em modo design, formulários) pelo que não                         precisa trabalhar com os comandos SQL.
            - relacionamento de cardinalidade 1: M  aparece com 1: 



🔧 Para que são utilizados?

                  Ideal para pequenos e médios projetos: 
                            - Registo de Clientes
                            - Sistema Simples de Vendas
                 

SGBD Orientado a Objetos:

Um SGBD orientado a objetos (Object-Oriented Database Management System – OODBMS) é um Sistema de Gestão de Bases de Dados que armazena, gere e manipula objetos, com atributos e métodos, tal como são usados na Programação Orientada a Objetos (POO).


SGBD NoSQL   (armazena dados em documentos JSON)

- MongoDB         consultas complexas; usado em backend web
 
- Firestore (Firebase)permite consultas mais avançadas; cloud-managed

 


 Dicionário de Dados (DD)  

DD é uma Técnica de descrição detalhada dos vários tipos de dados. 

É uma  técnica  complementar aos DFD.


Considerando uma ENTIDADE EXTERNA ALUNO  em que os dados vão ficar armazenados no arquivo alunos 



temos que pensar no tipo de dados envolvidos que serão utilizados armazenar no arquivo alunos.


O DICIONÁRIO DE DADOS deverá descrever cada arquivo de dados:

   - nome que identifica a entidade que irá corresponder a um tabela ou arquivo

     estrutura de atributos dessa entidade

       - as relações


atributos vão ser implementadas nos campos da TABELA




Dicionário de dados é um documento que descreve de forma detalhada os dados do sistema, incluindo tipotamanhosignificado relações restrições, servindo como guia para analistas e programadores.

considerando os atributos 

 ALUNOS (nºprocesso,  nome aluno,  morada,  concelho,  datanasc,  email ...)

EXEMPLO 


De forma simplificada:

ALUNOS

  • n_processo – inteiro, identificador único do aluno (chave primária)

  • nome_aluno – texto, nome do aluno

  • morada – texto, morada completa

  • concelho – texto, município de residência

  • data_nasc – data de nascimento

  • email – texto, email do aluno




MODELAÇÃO DE DADOS 

A modelação de dados é a técnica de descrever e representar os dados de um sistema, identificando entidades, atributos e seus relacionamentos, antes da sua implementação numa base de dados.


A técnica mais utilizada é a:

  Diagrama Entidade - Relação (DER) ou Diagrama Entidade - Relacionamento               -->   para o SGBD Relacional 

Diagrama Entidade - Relação (DER) ou Diagrama Entidade-Relacionamento, representa:

  •  as Entidades e seus atributos;
  •  as Relações ou relacionamentos entre as entidades.


OBJETIVO

O DER tem como objetivo descrever os dados que são utilizados no sistema (de forma conceptual)



CONCEITOS 

 

  • Entidades: objetos ou conceitos do mundo real (exemplo: funcionário, cliente, produto,  ..);
  • Atributos: características de uma entidade ( exemplo: nome, endereço, preço..);
  • Relações ou Relacionamentos: interações ou associações entre as entidades;



EXEMPLOS de DER







 -->>Estilo de Notação Chen 



-->> Estilo Pé de Galinha/Martin/Engenharia da Informação



EXEMPLO  de uma Entidade com atributos
                        Estilo Notação Chen                                 Estilo Pé galinha



Diagrama Entidade -  Relação (DER) - vamos usar Notação Chen

Cada Entidade tem um conjunto de atributos (propriedades)


      Apresentação da Entidade e seus atributos no Diagrama ER

     em que               


Num diagrama DER, uma entidade é representada por um retângulo com o nome da entidade no seu interior.
Os atributos de uma entidade podem ser indicados dentro de elipses ligadas por linhas ao retângulo da entidade


Apresentação por escrito em texto:

       CLIENTE ( CodCliente, Nome,  Morada, CodPostal)




Tipos de atributos:
  • Atributos Simples ou Atómicos (valor isolado)  Exemplo: peso, preço unitário…
  • Atributos Compostos (valor composto) – Ex: Endereço (RUA + nº +andar + cod_Postal).
  • Atributos Identificadores Identifica inequivocamente um registo numa entidade. Ex: CC, CodPaciente - a sublinhado
  • Atributos candidatos – Estão em condições de ser chave primária. Ex: NIF



Domínios dos atributos

Um domínio de um atributo corresponde ao conjunto dos valores possíveis que esse atributo pode assumir.
 Há domínios que são constituídos por nomes, outros são valores numéricos, outros ainda são datas, etc..


Relação ou Relacionamento 

Vamos utilizar o losango para a representação do relacionamento
 





Entidades: 
  • Cliente  
  • Produtos
Relação ou Relacionamento:  
  • compra (Cliente, Produto)


TIPOS DE RELACIONAMENTOS - Quanto ao número de entidades

  • UNÁRIO  - uma entidade se relaciona consigo mesma.
  • BINÁRIO -  relacionamento entre duas entidades distintas.
  • TERNÁRIO  - relação ou relacionamento entre três entidades distintas.


UNÁRIO      

Ocorre quando uma entidade se relaciona consigo mesma.







BINÁRIO (mais comum)

A relação envolve duas entidades distintas.




TERNÁRIO

Envolve três entidades numa única relação ou relacionamento




TIPOS DE RELACIONAMENTOS - quanto à cardinalidade da relação

cardinalidade especifica o número mínimo e o máximo de instâncias/ocorrências que uma entidade pode participar em um relacionamento.

 

  • RELACIONAMENTO de Um-para-Um    ( 1: 1)    

  • Uma instância de uma entidade se relaciona com apenas uma instância de outra entidade, e vice-versa.

    EXEMPLO

    Relacionamento UNÁRIO


    Relacionamento BINÁRIO



    Um funcionário chefia um Departamento 
    e Um Departamento é chefiado por um Funcionário



    • RELACIONAMENTO de Um-para-Muitos  1: M )   (lê-se 1 para M)
    EXEMPLO

    Relacionamento UNÁRIO


    Employer manages Employer

    Aqui, Employer é a mesma entidade nos dois lados do relacionamento, mas com papéis diferentes.

    Como explicar em palavras:

    Um Employer pode gerir vários Employers,
    mas cada Employer é gerido por um Employer.

    Ou seja:

    • 1 (lado 1) → o gerente

    • M (lado muitos) → os subordinados


    Relacionamento BINÁRIO
     

    Uma instância de uma entidade se relaciona com várias instâncias de outra entidade, mas cada instância da segunda entidade se relaciona com apenas uma instância da primeira.

    Um Funcionário trabalha num Departamento
    Um Departamento trabalham muitos Funcionários


    • RELACIONAMENTO de Muitos-para-Muitos M: M )   ou ( N: M ) 
    Relacionamento BINÁRIO
      
    Várias instâncias de uma entidade se relacionam com várias instâncias de outra entidade.

    EXEMPLO 1



    Um Departamento pode trabalhar em vários Projetos
    Um Projeto pode estar associado a vários Departamentos


    EXEMPLO 2 



    Um Médico consulta vários Pacientes
    Um Paciente é consultado por vários Médicos



    FERAMENTA ONLINE PARA CRIAR DIAGRAMA ER




    REPRESENTAÇÃO DE RELACIONAMENTOS



     


    RELAÇÃO ou RELACIONAMENTO                                CARDINALIDADE

     TRABALHA_PARA(EMPREGADO, DEPARTAMENTO)         N : 1 
    DIRIGE (EMPREGADO, DEPARTAMENTO)                               1:1 
    CONTROLA (DEPARTAMENTO, PROJECTO)                            1: N
    TRABALHA_EM (EMPREGADO, PROJECTO)                           N:N
     



    RELAÇÕES BINÁRIAS quanto à participação das entidades


    Quanto à obrigatoriedade dos elementos de uma entidade participarem, ou não, no relacionamento com outra entidade, temos que: 

    Participação obrigatória de ambas as entidades   
    Participação não obrigatória de uma das duas entidades
      Participação não obrigatória de nenhuma das entidades






    IMPLEMENTAÇÃO DE RELACIONAMENTOS 

    A cardinalidade  mínima e máxima do relacionamento são fatores determinantes para indicar se deverá ser implementado:
    •  nova Tabela 
    • Adição de colunas/atributos em uma das entidades participantes 
    • Fusão de tabelas de entidades 

    Modelo Conceitual (DER) Modelo lógico (Modelo Relacional )
     
    Entidade                                       -- »Tabela
    Atributo                                         -- »Coluna ou  Campo da tabela
    Atributo Identificador                    -- »Chave Primária (PK)
    Relacionamento 1:M                       -- »novo campo Chave Estrangeira (FK)
    Relacionamento M:M                      -- »surge Nova Tabela do relacionamento



    Situação 1    
    Relacionamento binário 1:1 com participação obrigatória em ambas entidades.


        (mínimomáximo) 
                   ( 1  , 1 )  
    • um cidadão tem um e só um cartão de cidadão;
    • um cartão de cidadão pertence a um e só um cidadão;

    Neste primeiro caso, é necessária apenas uma tabela para traduzir este tipo de relacionamento, em que essa tabela deverá incluir todos os atributos das duas entidades.



    Fusão ou Junção das 2 entidades ->> implementação numa única tabela



    Situação 2 
    Relacionamento 1:1 com participação obrigatória em apenas uma entidade.



    • um Diretor pode dirigir 0 ou 1 departamento;
    • um Departamento pode ser dirigido por um e só um Diretor;

    Neste caso são necessárias duas tabelas, uma para cada entidade.


    •  Adição de coluna em uma das entidades participantes - Chave Estrangeira (Foreign Key - FK)
    Num relacionamento 1:1, a conversão para modelo relacional com adição de FK coloca a chave primária de uma tabela como estrangeira na outra tabela

    Se for obrigatória ((1,1)), a FK deve ser colocada no lado opcional para evitar valores nulos.


    OUTRO EXEMPLO 
    • DER: Funcionário (1,1) --- possui ou utiliza --- (0,1) Carro da Empresa.
    ENTIDADES
    Funcionario (CodFunc, nome, ...)
    Carro (CodCarro, modelo, Matrícula)


    • Implementação no Modelo Relacional:
    • TABELAS
      • Funcionario (CodFunc, nome, ...)
      • Carro (CodCarro, modelo, Matrícula, CodFuncFK)

    Adição de coluna/campo na entidades do lado opcional - adicionar a Chave Estrangeira (Foreign Key - FK)



    Situação 3
    Relacionamento 1:1  sem participação obrigatória em nenhuma entidade
    (ambas entidades com participação opcional)

    • Um Diretor utiliza 0 ou 1 Gabinete;
    • um Gabinete pode ser utilizado por 0 ou 1 Diretor;

    Neste caso, são necessárias duas tabelas, uma para cada entidade.
            
    • Adição de coluna em uma das entidades participantes - Chave Estrangeira (FK)



    Situação 4
    Relacionamento 1: M  com participação obrigatória na entidade do lado M .





    • um Aluno matricula-se     0 ou 1   Curso;
    • um Curso  tem matriculado  1 ou vários Alunos ;
    Neste caso são necessárias duas tabelasuma tabela para cada entidade.



    chave estrangeira da entidade do lado 1 fica na tabela do lado M
    • Adição de coluna Chave Estrangeira (FK) na tabela do lado M

    Situação 5

    Relacionamento 1:M sem participação obrigatória na entidade do lado M.


    • um fornecedor fornece 0 ou vários produtos;
    • um produto pode ser fornecido por 0 ou 1 fornecedor;

    NO GERAL, são necessárias duas tabelas, uma para cada entidade.  
    Mas poderá ser utilizado 3 tabelas.

     A chave estrangeira da entidade do lado fica na tabela do lado M
    • Adição de coluna Chave Estrangeira (FK) lado M

    IMPLEMENTAÇÃO no MODELO RELACIONAL 
    Cada Entidade  será implementadas em TABELA com adição do campo chave estrangeira 
    1. Entidade Fornecedores (CodFornecedor (PK), Nome, ...):                vai dar origem à              Tabela fornecedores.
    2. Entidade Produtos (CodProduto, Nome, ..., CodFornecedorFK):                vai dar origem à    Tabela  produtos.

    Situação 6       
    Relacionamento M:M para qualquer que seja a participação   -  sempre três tabelas
     

    Em qualquer relacionamentos binário do tipo M:M são necessárias sempre três tabelas
    uma tabela para cada ENTIDADE e uma nova tabela para o relacionamento entre as entidades.


    Relacionamento M:M para qualquer que seja a participação.


    • um cliente pode comprar 0 ou vários produtos;
    • um produto pode ser comprado por 0 ou vários clientes;

    • um cliente pode comprar 1 ou vários produtos;
    • um produto é comprado por 0 ou vários clientes;





    No Diagrama Entidade Relação - DER  com relacionamento M:M

    DER – Entidades e Atributos

    CLIENTES (id_cliente , Nome, Endereço, etc)
    PRODUTOS ( id_produto , NomeProduto, quantidade, preço, categoria, etc)


    IMPLEMENTAÇÃO MODELO RELACIONAL   – Tabelas e Chaves

    3 TABELAS com campos e respetivas chaves primárias e estrangeiras

    TABELA CLIENTES;     
     TABELA PRODUTOS ;

     TABELA COMPRAS (tabela do relacionamento)

    Criação de Nova tabela do relacionamento "COMPRAS" com a chaves estrangeiras (uma de cada uma das entidades: id_clienteFK, id_produtoFK) e com outros atributos id_compra (Chave Primária PK) e quantidade, data_compra,  etc

    CLIENTES (id_cliente (PK), Nome, Endereço, etc)
    PRODUTOS ( id_produto (PK), NomeProduto, quantidade, preço, categoria, etc)
    COMPRAS (id_compra (PK), quantidade, id_clienteFK, id_produtoFK )



    EXEMPLO:



    --»»Definir tabelas resultantes com campos e respetivas chaves 

    MÉDICO ( ...)
    PACIENTE ( ... )
    CONSULTA (..)

     

    EXEMPLO: Relacionamento M:M 

    DER  – Entidades e Atributos
     Escrever por extenso as entidades e atributos resultantes do DER

    ENTIDADES:

    Veterenario (CRMVet, Nome, Data_Admissao, Salario)

    Animal (Codigo, Nome, AnoNasc, Raca)

    Entidade derivada do relacionamento

     Consulta (CodConsulta, Data, Hora, CRMVetFK, CodigoFK)


     MODELO RELACIONAL  - Tabelas e Chaves

     TABELA Veterenario (CRMVet (PK), Nome, Data_Admissao, Salario

    TABELA Animal (CodAnimal (PK), Nome, AnoNasc, Raca)

    TABELA Consulta (CodConsulta (PK), Data, Hora, Motivo, CRMVetFK, CodigoFK)



    DE FORMA organizada:





    Outro EXEMPLO


    Definir tabelas com respetivas chaves 




    RELACIONAMENTO TERNÁRIO



    SÃO NECESSÁRIAS 4 tabelas 

      




    Definição de Entidade Fraca

    Uma entidade fraca é uma entidade que não possui chave primária própria suficiente para identificá-la unicamente.
    Ou seja, entidade que não consegue existir sozinha sem depender da entidade forte.

    Características principais

    CaracterísticaDescrição
    Depende de outra entidadeNão existe sozinha
    Chave parcialTem atributos que não bastam para identificar a entidade
    Relacionamento identificadorRelaciona a entidade fraca com a entidade forte
    Representação no DERRetângulo duplo, linha dupla para o relacionamento identificador
    CardinalidadeNormalmente 1:N do forte para o fraco







    EXEMPLO simples de um Diagrama ER 
     
    Uma farmácia pode vender vários produtos e um produto por uma farmácia 
    Uma farmácia emprega vários farmacêuticos e um farmacêutico trabalha na farmácia



    Exemplo de um modelo E-R: