<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Victor Macedo</title>
    <description>The latest articles on DEV Community by Victor Macedo (@victormacedocb).</description>
    <link>https://dev.to/victormacedocb</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3800318%2F6a8e0f11-4479-4081-9165-3844e26ad316.jpeg</url>
      <title>DEV Community: Victor Macedo</title>
      <link>https://dev.to/victormacedocb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/victormacedocb"/>
    <language>en</language>
    <item>
      <title>A EVOLUÇÃO DO MODELO RELACIONAL PARA O OBJETO-RELACIONAL</title>
      <dc:creator>Victor Macedo</dc:creator>
      <pubDate>Sun, 01 Mar 2026 19:30:43 +0000</pubDate>
      <link>https://dev.to/victormacedocb/a-evolucao-do-modelo-relacional-para-o-objeto-relacional-35j6</link>
      <guid>https://dev.to/victormacedocb/a-evolucao-do-modelo-relacional-para-o-objeto-relacional-35j6</guid>
      <description>&lt;h2&gt;
  
  
  1. Introdução
&lt;/h2&gt;

&lt;p&gt;O modelo relacional foi, durante muitos anos, o modelo dominante para bancos de dados. Contudo com o passar dos anos surgiu o modelo OO (Orientado a Objetos), uma nova forma de se programar softwares, baseada em classes e objetos. Essa mudança evidenciou uma incompatibilidade conceitual entre aplicações baseadas em objetos e bancos de dados relacionais tradicionais, revelando limitações na integração entre esses dois modelos.&lt;/p&gt;

&lt;p&gt;Diante deste cenário, tornou-se necessário buscar soluções para reduzir essa incompatibilidade, dando origem a novos modelos de bancos de dados. Este artigo tem como objetivo analisar a evolução do modelo relacional tradicional ao modelo objeto-relacional, destacando o “Impedance Mismatch” e as soluções que foram surgindo e se aprimorando ao longo do tempo.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. O Problema da Impedância (Impedance Mismatch)
&lt;/h2&gt;

&lt;p&gt;Com a chegada do modelo OO e a tentativa de implementação entre os dois modelos, surgiu o “Impedance Mismatch” uma incompatibilidade conceitual e estrutural entre esses dois modelos.&lt;/p&gt;

&lt;p&gt;A programação OO ela é baseada em: classes, herança, objetos, métodos dentro dos objetos, atributos, no relacionamento direto entre objetos e etc. Em contraste o modelo relacional é baseado em: tabelas, linhas, colunas, chaves primárias (PK) e chaves estrangeiras (FK) para estabelecer relacionamento.&lt;/p&gt;

&lt;p&gt;O problema surge porque banco de dados tem maneiras distintas de representar os dados. Linguagens que são voltadas a Programação Orientada a Objetos, utilizam estruturas complexas de dados, mapear a hierarquia de objetos de modelos orientados para modelos relacionais era um grande desafio, porque o processo de conversão entre objetos e tabelas exige um mapeamento adicional, o que causava um problema em aplicações orientadas a objetos quando precisa armazenar ou recuperar informações de um banco de dados relacional e também aumentando a complexidade do desenvolvimento e podendo impactar significantemente no desenvolvimento do sistema.&lt;/p&gt;

&lt;p&gt;Além disso o modelo OO permite usar herança e encapsulamento, conceitos que não existem no modelo relacional. Em sistemas OO a herança é comumente utilizada para classes herdarem atributos e métodos de outras, formando assim uma estrutura hierárquica. Já no modelo relacional essa hierarquia não seria possível, precisando-se assim ser adaptado para tabelas, muitas vezes exigindo mais trabalho e estratégias adicionais, e deixando assim o projeto mais complexo.&lt;/p&gt;

&lt;p&gt;Outro tópico a ser ressaltado é que objetos podem conter outros objetos como atributos, formando estruturas compostas. No modelo relacional, essa estrutura precisa ser dividida em tabelas que são ligadas por chaves estrangeiras. Esse processo aumenta a dependência de operações de junções (joins) para reconstruir as informações, o que pode dificultar consultas mais complexas.&lt;/p&gt;

&lt;p&gt;Diante dessas dificuldades, surgiram algumas ferramentas para facilitarem o mapeamento conhecidas como mapeadores objeto-relacionais (ORM), responsáveis por realizar a conversão automática entre objeto e estruturas relacionais. Por mais que essas ferramentas tenham reduzido consideravelmente a complexidade para o desenvolvedor, elas não eliminam completamente o problema conceitual entre os dois modelos.&lt;br&gt;
Esse cenário motivou o surgimento de novas abordagens para o gerenciamento desses dados, como os bancos de dados orientados a objetos (OODBMS) e, posteriormente, os bancos objetos-relacionais (ORDBMS), que buscam a robustez do modelo relacional com as características do orientado a objetos.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Comparativo de modelos
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Critério&lt;/th&gt;
&lt;th&gt;RDBMS&lt;/th&gt;
&lt;th&gt;OODBMS&lt;/th&gt;
&lt;th&gt;ORDBMS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Principal vantagem&lt;/td&gt;
&lt;td&gt;Estrutura sólida, padronização em SQL e forte integridade de dados.&lt;/td&gt;
&lt;td&gt;Representação natural de objetos complexos sem necessidade de mapeamento.&lt;/td&gt;
&lt;td&gt;Combina a estabilidade do modelo relacional com recursos orientados a objetos.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Relacionamentos complexos&lt;/td&gt;
&lt;td&gt;Utiliza chaves primárias (PK), chaves estrangeiras (FK) e joins para reconstruir relações. Pode gerar consultas complexas.&lt;/td&gt;
&lt;td&gt;Relacionamentos são feitos por referências diretas entre objetos, de forma mais natural e direta.&lt;/td&gt;
&lt;td&gt;Mantém PK e FK, mas permite tipos complexos, herança e extensões, reduzindo parte da limitação estrutural.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Síntese / Evolução&lt;/td&gt;
&lt;td&gt;Modelo tradicional baseado exclusivamente em tabelas e SQL padrão.&lt;/td&gt;
&lt;td&gt;Abandona o modelo relacional clássico, focando totalmente em objetos.&lt;/td&gt;
&lt;td&gt;Mantém o SQL e a estrutura relacional, mas adiciona extensibilidade, tipos personalizados e suporte a conceitos de OO.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  4. Arquitetura do PostgreSQL
&lt;/h2&gt;

&lt;p&gt;O PostgreSQL tem a arquitetura de cliente-servidor sendo um sistema catalogue-driven, ou seja, guiado por catálogos internos. Isso significa que todas as informações sobre o banco de dados como: tabelas, colunas, índices, funções e permissões, estão armazenadas em tabelas catalogadas pelo sistema. Dessa forma, o banco faz uma “auto consulta” para decidir como que ele vai executar determinadas operações, em vez de depender de código fixo.&lt;/p&gt;

&lt;p&gt;Essa arquitetura deixa o PostgreSQL extremamente extensível. Sendo possível criar vários tipos de novos dados personalizados, funções, operadores sendo possível até a utilização de extensões, sem precisar compilar o código novamente, algo impressionante para padrões SQL. Esses elementos funcionam como nativos, permitindo assim, que o banco sustente estruturas complexas, objetos compostos e hierarquias, características de sistemas orientados a objetos.&lt;/p&gt;

&lt;p&gt;Essa arquitetura é extremamente funcional para o contexto do ORDBMS, já que ela combina a rigidez do modelo relacional com conceitos de orientação a objetos. O PostgreSQL consegue implementar isso graças a seu sistema catalogue-driven e também, graças a sua extensibilidade.&lt;/p&gt;

&lt;p&gt;Em resumo, a arquitetura expansível e catalogue-driven tornam o PostgreSQL um banco evolutivo e adaptativo, adaptando-se a necessidades especificas sem quebrar o sistema principal. Isso reflete na segurança, eficiência e na versatilidade, permitindo que ele atenda as exigências de aplicações cada vez mais complexas e de grande porte, sem abrir mão da confiabilidade que o modelo relacional traz.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Conclusão
&lt;/h2&gt;

&lt;p&gt;A evolução do banco de dados do modelo relacional para o objeto-relacional reflete a necessidade de acompanhar as mudanças na programação e nas novas aplicações. O modelo relacional, apesar de já consolidado, mostrou limitações com sistemas orientados a objetos devido ao Impedance Mismatch, que dificulta integrar as tabelas e objetos complexos.&lt;/p&gt;

&lt;p&gt;Os OODBMS tentaram aproximar a lógica do OO, mas a falta de uma padronização levou ao surgimento dos ORDBMS, que combinam confiabilidade relacional com a flexibilidade da orientação a objetos.&lt;/p&gt;

&lt;p&gt;O PostgreSQL consegue exemplificar bem essa evolução, sendo catalogue-driven e extensível, permitindo criar tipos de dados, funções e extensões sem recompilar, mantendo o tradicional SQL. Assim, os bancos modernos suportam hierarquia, objetos compostos e relacionamentos avançados, sem abrir mão da segurança e eficiência.&lt;/p&gt;

&lt;p&gt;Referências&lt;/p&gt;

&lt;p&gt;Elmasri, R., &amp;amp; Navathe, S. B. (2016). Fundamentals of Database Systems (7th ed.). Pearson.&lt;/p&gt;

&lt;p&gt;Date, C. J. (2012). Database Design and Relational Theory: Normal Forms and All That Jazz. O'Reilly Media.&lt;/p&gt;

&lt;p&gt;Silberschatz, A., Korth, H., &amp;amp; Sudarshan, S. (2019). Database System Concepts (7th ed.). McGraw-Hill.&lt;/p&gt;

&lt;p&gt;Ambler, S. (2003). The Object-Relational Impedance Mismatch. Agile Data. Disponível em: &lt;a href="http://www.agiledata.org/essays/mismatch.html" rel="noopener noreferrer"&gt;http://www.agiledata.org/essays/mismatch.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;PostgreSQL Global Development Group. (2023). PostgreSQL Documentation. Disponível em: &lt;a href="https://www.postgresql.org/docs/" rel="noopener noreferrer"&gt;https://www.postgresql.org/docs/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Batista, R. (2019). Bancos de Dados Objeto-Relacionais: Conceitos e Aplicações. São Paulo: Novatec.&lt;/p&gt;

&lt;p&gt;Startup House Glossary. (2021). What is Impedance Mismatch in Databases? Disponível em: &lt;a href="https://startup-house.com/glossary/what-is-impedance-mismatch-in-databases" rel="noopener noreferrer"&gt;https://startup-house.com/glossary/what-is-impedance-mismatch-in-databases&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Elmasri, R., &amp;amp; Navathe, S. B. (2015). Sistemas de Banco de Dados (6ª ed.). São Paulo: Pearson.&lt;/p&gt;

</description>
      <category>database</category>
      <category>postgresq</category>
      <category>softwareengineering</category>
      <category>oop</category>
    </item>
  </channel>
</rss>
