<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Cesar Zavaleta]]></title><description><![CDATA[Programación, Educación y Gaming]]></description><link>https://cesarzavaleta.dev/</link><image><url>https://cesarzavaleta.dev/favicon.png</url><title>Cesar Zavaleta</title><link>https://cesarzavaleta.dev/</link></image><generator>Ghost 5.88</generator><lastBuildDate>Mon, 31 Aug 2026 14:34:33 GMT</lastBuildDate><atom:link href="https://cesarzavaleta.dev/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Ejemplos de modelo entidad-relación: 4 casos resueltos]]></title><description><![CDATA[<h2 id="caso-01-%C2%B7-grupos-empresariales">Caso 01 &#xB7; Grupos empresariales</h2><h4 id="el-caso">El caso</h4><blockquote>&#x2022; Un grupo empresarial (id_grupo) tiene muchas empresas (id_empresa). Cada empresa pertenece solamente a un grupo. &#x2022; Las empresas est&#xE1;n conectadas por una relaci&#xF3;n de jerarqu&#xED;a. Cada subsidiaria es asignada a una empresa de nivel</blockquote>]]></description><link>https://cesarzavaleta.dev/ejemplos-de-modelo-entidad-relacion-4-casos-resueltos/</link><guid isPermaLink="false">6a863b39f8edf9170672d7ca</guid><category><![CDATA[SQL]]></category><dc:creator><![CDATA[Cesar Eduardo Zavaleta Leon]]></dc:creator><pubDate>Wed, 19 Aug 2026 23:45:44 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1669023414171-56f0740e34cd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDExOHx8c3FsfGVufDB8fHx8MTc4NzIwMjI1OHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<h2 id="caso-01-%C2%B7-grupos-empresariales">Caso 01 &#xB7; Grupos empresariales</h2><h4 id="el-caso">El caso</h4><blockquote>&#x2022; Un grupo empresarial (id_grupo) tiene muchas empresas (id_empresa). Cada empresa pertenece solamente a un grupo. &#x2022; Las empresas est&#xE1;n conectadas por una relaci&#xF3;n de jerarqu&#xED;a. Cada subsidiaria es asignada a una empresa de nivel superior, esto es, la empresa padre. &#x2022; Cada empresa tiene varias plantas de producci&#xF3;n (id_planta). Cada planta est&#xE1; bajo el control de una sola empresa. &#x2022; Las plantas de producci&#xF3;n producen muchos productos diversos (id_producto). Los productos son exclusivos a cada planta, es decir, un producto es producido por solo una planta.</blockquote><h4 id="la-soluci%C3%B3n">La soluci&#xF3;n</h4><img src="https://images.unsplash.com/photo-1669023414171-56f0740e34cd?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDExOHx8c3FsfGVufDB8fHx8MTc4NzIwMjI1OHww&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="Ejemplos de modelo entidad-relaci&#xF3;n: 4 casos resueltos"><p>Entidades identificadas. Los sustantivos del enunciado de los que se necesita guardar informaci&#xF3;n son cuatro, y forman una cadena descendente:</p><p>GRUPO &#x2192; EMPRESA &#x2192; PLANTA &#x2192; PRODUCTO</p><h3 id="atributos"><strong>Atributos</strong></h3>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rhj:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidad</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rhk:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Atributos (la clave primaria en primer lugar)</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rhl:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">GRUPO</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rhm:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">id_grupo, nom_grupo, pai_grupo</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rhn:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">EMPRESA</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rho:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">id_empresa, nom_empresa, ruc_empresa, sec_empresa</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rhp:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">PLANTA</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rhq:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">id_planta, nom_planta, ubi_planta, cap_planta</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rhr:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">PRODUCTO</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rhs:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">id_producto, nom_producto, uni_producto, pre_producto</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>Relaciones y cardinalidades</p>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rht:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Relaci&#xF3;n</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rhu:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidades</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rhv:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Cardinalidades</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ri0:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Tipo</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ri1:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Grado</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ri2:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">agrupa</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ri3:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">GRUPO &#x2194; EMPRESA</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ri4:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">GRUPO (1,n) &#xB7; EMPRESA (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ri5:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ri6:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">2</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ri7:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">jerarqu&#xED;a</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ri8:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">EMPRESA &#x2194; EMPRESA</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ri9:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">padre (0,n) &#xB7; subsidiaria (0,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ria:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rib:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ric:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">controla</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rid:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">EMPRESA &#x2194; PLANTA</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rie:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">EMPRESA (1,n) &#xB7; PLANTA (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rif:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rig:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">2</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rih:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">produce</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rii:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">PLANTA &#x2194; PRODUCTO</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rij:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">PLANTA (1,n) &#xB7; PRODUCTO (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rik:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ril:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">2</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<h3 id="decisiones-de-dise%C3%B1o">Decisiones de dise&#xF1;o</h3><p>La jerarqu&#xED;a entre empresas es una relaci&#xF3;n reflexiva o de grado 1: la entidad EMPRESA se relaciona consigo misma. Cada rama necesita su rol (padre y subsidiaria); sin ellos el diagrama es ambiguo.Los m&#xED;nimos de la reflexiva son cero en ambos extremos: las empresas cabecera de grupo no dependen de nadie y no toda empresa tiene subsidiarias.La frase &#xAB;un producto es producido por solo una planta&#xBB; fija la cardinalidad (1,1) del lado de PRODUCTO. Si un producto pudiera fabricarse en varias plantas, la relaci&#xF3;n ser&#xED;a M:N y exigir&#xED;a una tabla intermedia.Todo el modelo es 1:N, por lo que no aparece ning&#xFA;n rombo doble.</p><h4 id="diagrama-de-chen">Diagrama de Chen</h4><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://cesarzavaleta.dev/content/images/2026/08/mer-caso1-chen-1.png" class="kg-image" alt="Ejemplos de modelo entidad-relaci&#xF3;n: 4 casos resueltos" loading="lazy" width="2000" height="1763" srcset="https://cesarzavaleta.dev/content/images/size/w600/2026/08/mer-caso1-chen-1.png 600w, https://cesarzavaleta.dev/content/images/size/w1000/2026/08/mer-caso1-chen-1.png 1000w, https://cesarzavaleta.dev/content/images/size/w1600/2026/08/mer-caso1-chen-1.png 1600w, https://cesarzavaleta.dev/content/images/2026/08/mer-caso1-chen-1.png 2300w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Caso 01 &#xB7; Notaci&#xF3;n de Chen. Toda la cadena es 1:N; la relaci&#xF3;n jerarqu&#xED;a une EMPRESA consigo misma.</span></figcaption></figure><h4 id="diagrama-de-martin">Diagrama de Martin</h4><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://cesarzavaleta.dev/content/images/2026/08/mer-caso1-martin-1.png" class="kg-image" alt="Ejemplos de modelo entidad-relaci&#xF3;n: 4 casos resueltos" loading="lazy" width="1800" height="1988" srcset="https://cesarzavaleta.dev/content/images/size/w600/2026/08/mer-caso1-martin-1.png 600w, https://cesarzavaleta.dev/content/images/size/w1000/2026/08/mer-caso1-martin-1.png 1000w, https://cesarzavaleta.dev/content/images/size/w1600/2026/08/mer-caso1-martin-1.png 1600w, https://cesarzavaleta.dev/content/images/2026/08/mer-caso1-martin-1.png 1800w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Caso 01 &#xB7; Notaci&#xF3;n de Martin. La misma jerarqu&#xED;a, ahora como una l&#xED;nea que sale y vuelve a la caja EMPRESA.</span></figcaption></figure><h3 id="caso-02-%C2%B7-elecciones-universitarias">Caso 02 &#xB7; Elecciones universitarias</h3><h4 id="el-caso-1">El caso</h4><blockquote>&#x2022; La universidad tiene diversos clubes para la organizaci&#xF3;n de eventos, como parte de sus actividades extracurriculares. Cada club tiene un c&#xF3;digo, un nombre, una sede dentro del campus y un presupuesto anual. &#x2022; Los clubes son gestionados por los estudiantes, los cuales son elegidos por el alumnado para un periodo anual de gobierno. Cada proceso electoral tiene una fecha de realizaci&#xF3;n y se crean mesas de sufragio para que los alumnos puedan votar. &#x2022; Los estudiantes pueden inscribir sus listas de candidatos. Cada lista debe tener un presidente, vicepresidente, secretario, tesorero y dos vocales. &#x2022; Al finalizar cada proceso y luego de realizar la contabilizaci&#xF3;n de los votos se proclama a la lista ganadora.</blockquote><h3 id="la-soluci%C3%B3n-1">La soluci&#xF3;n</h3><p><strong>Entidades identificadas </strong></p><p>CLUB &#xB7; PROCESO &#xB7; MESA (d&#xE9;bil) &#xB7; LISTA &#xB7; ESTUDIANTE </p><p>MESA es una entidad d&#xE9;bil: las mesas de sufragio se numeran desde 1 dentro de cada proceso electoral, de modo que num_mesa por s&#xED; solo no identifica ninguna mesa. Necesita a&#xF1;adir la clave del proceso, lo que constituye una dependencia de identificaci&#xF3;n.Atributos</p>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rim:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidad</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rin:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Atributos</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rio:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">CLUB</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rip:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">cod_club, nom_club, sed_club, pre_club</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":riq:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">PROCESO</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rir:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">cod_proceso, fec_proceso, ani_proceso, est_proceso</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ris:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">MESA (d&#xE9;bil)</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rit:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">num_mesa (identificador parcial), ubi_mesa, cap_mesa</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":riu:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">LISTA</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":riv:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">cod_lista, nom_lista, vot_lista</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rj0:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">ESTUDIANTE</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rj1:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">cod_estudiante, nom_estudiante, dni_estudiante, esc_estudiante</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p><strong>Relaciones y cardinalidades</strong></p>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rj2:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Relaci&#xF3;n</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rj3:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidades</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rj4:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Cardinalidades</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rj5:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Tipo</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rj6:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">convoca</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rj7:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">CLUB &#x2194; PROCESO</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rj8:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">CLUB (1,n) &#xB7; PROCESO (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rj9:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rja:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">instala</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjb:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">PROCESO &#x2194; MESA</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjc:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">PROCESO (1,n) &#xB7; MESA (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjd:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rje:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">recibe</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjf:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">PROCESO &#x2194; LISTA</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjg:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">PROCESO (1,n) &#xB7; LISTA (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjh:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rji:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">proclama</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjj:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">PROCESO &#x2194; LISTA</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjk:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">PROCESO (0,1) &#xB7; LISTA (0,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjl:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:1</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjm:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">integra</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjn:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">LISTA &#x2194; ESTUDIANTE</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjo:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">LISTA (6,6) &#xB7; ESTUDIANTE (0,n)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjp:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">M:N</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjq:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">sufraga</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjr:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">MESA &#x2194; ESTUDIANTE</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjs:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">MESA (1,n) &#xB7; ESTUDIANTE (0,n)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjt:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">M:N</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>La relaci&#xF3;n integra lleva un atributo propio: car_integrante, el cargo que ocupa cada estudiante dentro de la lista.Decisiones de dise&#xF1;oLa cardinalidad (6,6) de integra no es un capricho: el enunciado exige exactamente seis integrantes por lista (presidente, vicepresidente, secretario, tesorero y dos vocales). Conviene recordar que la cardinalidad admite cualquier n&#xFA;mero, no solo 0, 1 o n.El cargo es atributo de la relaci&#xF3;n y no de ninguna de las dos entidades: un estudiante no &#xAB;tiene un cargo&#xBB; en abstracto, lo tiene dentro de una lista concreta.PROCESO y LISTA est&#xE1;n unidos dos veces, por recibe (las listas inscritas) y por proclama (la lista ganadora). No es un error: son dos hechos distintos del negocio.proclama es 1:1 y opcional a ambos lados, porque un proceso solo tiene ganadora una vez terminado el conteo.sufraga registra en qu&#xE9; mesa vota cada estudiante en cada proceso; por eso es M:N y no 1:N.</p><h4 id="diagrama-de-chen-1">Diagrama de Chen</h4><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://cesarzavaleta.dev/content/images/2026/08/mer-caso2-chen.png" class="kg-image" alt="Ejemplos de modelo entidad-relaci&#xF3;n: 4 casos resueltos" loading="lazy" width="2000" height="1646" srcset="https://cesarzavaleta.dev/content/images/size/w600/2026/08/mer-caso2-chen.png 600w, https://cesarzavaleta.dev/content/images/size/w1000/2026/08/mer-caso2-chen.png 1000w, https://cesarzavaleta.dev/content/images/size/w1600/2026/08/mer-caso2-chen.png 1600w, https://cesarzavaleta.dev/content/images/size/w2400/2026/08/mer-caso2-chen.png 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Caso 02 &#xB7; Notaci&#xF3;n de Chen. MESA es entidad d&#xE9;bil: el rombo instala lleva una I por dependencia de identificaci&#xF3;n.</span></figcaption></figure><h4 id="diagrama-de-martin-1">Diagrama de Martin</h4><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://cesarzavaleta.dev/content/images/2026/08/mer-caso2-martin.png" class="kg-image" alt="Ejemplos de modelo entidad-relaci&#xF3;n: 4 casos resueltos" loading="lazy" width="2000" height="1644" srcset="https://cesarzavaleta.dev/content/images/size/w600/2026/08/mer-caso2-martin.png 600w, https://cesarzavaleta.dev/content/images/size/w1000/2026/08/mer-caso2-martin.png 1000w, https://cesarzavaleta.dev/content/images/size/w1600/2026/08/mer-caso2-martin.png 1600w, https://cesarzavaleta.dev/content/images/2026/08/mer-caso2-martin.png 2020w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Caso 02 &#xB7; Notaci&#xF3;n de Martin. MESA arrastra COD_PROCESO dentro de su clave: es lo mismo que la I del rombo en Chen.</span></figcaption></figure><h3 id="caso-03-%C2%B7-dise%C3%B1o-de-encuestas">Caso 03 &#xB7; Dise&#xF1;o de encuestas</h3><h4 id="el-caso-2">El caso</h4><blockquote>&#x2022; Realizar un modelo para organizar los datos de un futuro sistema de dise&#xF1;o de encuestas, donde se pueden crear preguntas de tres tipos: opci&#xF3;n &#xFA;nica, opci&#xF3;n m&#xFA;ltiple y de texto. &#x2022; El modelo debe soportar la creaci&#xF3;n de encuestas, sus preguntas y opciones. Por otro lado, debe soportarse el registro de destinatarios de encuestas pues &#xE9;stas ser&#xE1;n distribuidas v&#xED;a correo electr&#xF3;nico. &#x2022; Por cada destinatario que responde una encuesta se registran sus respuestas para un posterior procesamiento.</blockquote><h3 id="la-soluci%C3%B3n-2">La soluci&#xF3;n</h3><p><strong>Entidades identificadas</strong></p><p>ENCUESTA &#xB7; PREGUNTA (supertipo) &#xB7; OPCION &#xB7; DESTINATARIOSubtipos de PREGUNTA: P_UNICA &#xB7; P_MULTIPLE &#xB7; P_TEXTOAtributos</p>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rju:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidad</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rjv:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Atributos</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rk0:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">ENCUESTA</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rk1:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">cod_encuesta, tit_encuesta, des_encuesta, fec_encuesta</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rk2:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">PREGUNTA (supertipo)</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rk3:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">cod_pregunta, tex_pregunta, ord_pregunta, obl_pregunta</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rk4:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">P_UNICA (subtipo)</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rk5:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">ale_unica (aleatoriza el orden de las opciones)</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rk6:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">P_MULTIPLE (subtipo)</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rk7:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">max_multiple (m&#xE1;ximo de opciones marcables)</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rk8:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">P_TEXTO (subtipo)</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rk9:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">lon_texto (longitud m&#xE1;xima admitida)</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rka:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">OPCION</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkb:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">cod_opcion, tex_opcion, ord_opcion</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkc:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">DESTINATARIO</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkd:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">cod_destinatario, nom_destinatario, ema_destinatario</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>Los tres subtipos heredan los cuatro atributos de PREGUNTA y a&#xF1;aden el suyo. La herencia baja del supertipo a los subtipos, nunca al rev&#xE9;s.</p><p><strong>Relaciones y cardinalidades</strong></p>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rke:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Relaci&#xF3;n</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkf:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidades</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkg:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Cardinalidades</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkh:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Tipo</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rki:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">contiene</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkj:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">ENCUESTA &#x2194; PREGUNTA</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkk:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">ENCUESTA (1,n) &#xB7; PREGUNTA (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkl:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkm:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">ofrece</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkn:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">PREGUNTA &#x2194; OPCION</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rko:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">PREGUNTA (0,n) &#xB7; OPCION (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkp:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkq:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">envia</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkr:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">ENCUESTA &#x2194; DESTINATARIO</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rks:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">ENCUESTA (0,n) &#xB7; DESTINATARIO (0,n)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkt:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">M:N</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rku:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">responde</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rkv:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">PREGUNTA &#x2194; DESTINATARIO</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rl0:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">PREGUNTA (0,n) &#xB7; DESTINATARIO (0,n)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rl1:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">M:N</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->

<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rl2:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Relaci&#xF3;n</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rl3:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Atributos propios</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rl4:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">envia</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rl5:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">fec_envio, est_envio</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rl6:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">responde</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rl7:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">val_respuesta, fec_respuesta</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p><strong>La generalizaci&#xF3;n</strong></p><p>PREGUNTA es un supertipo que se descompone en tres subtipos. Para clasificar la jerarqu&#xED;a hay que responder a dos preguntas, y ambas se contestan leyendo el enunciado:&#xBF;Los subtipos cubren todos los casos? S&#xED;: &#xFA;nica, m&#xFA;ltiple y de texto agotan los tipos posibles. La jerarqu&#xED;a es TOTAL, y en Chen se dibuja un c&#xED;rculo sobre el tri&#xE1;ngulo invertido.&#xBF;Una pregunta puede pertenecer a dos subtipos a la vez? No. La jerarqu&#xED;a es EXCLUSIVA, y en Chen se representa mediante un arco que cruza las ramas.Resultado: jerarqu&#xED;a exclusiva total &#x2192; c&#xED;rculo y arco.Decisiones de dise&#xF1;oLa respuesta no es una entidad. Es la tentaci&#xF3;n cl&#xE1;sica de este caso, pero una respuesta no existe por s&#xED; sola: solo existe cuando hay un destinatario concreto y una pregunta concreta a la vez. Por eso val_respuesta y fec_respuesta son atributos de la relaci&#xF3;n M:N responde.La relaci&#xF3;n ofrece sale del supertipo con m&#xED;nimo 0, porque las preguntas de texto no tienen opciones. La alternativa m&#xE1;s estricta ser&#xED;a colgar la relaci&#xF3;n &#xFA;nicamente de los dos subtipos que s&#xED; las admiten.Al pasar al modelo l&#xF3;gico, cada relaci&#xF3;n M:N generar&#xE1; su propia tabla intermedia, que es donde acabar&#xE1;n viviendo los atributos de la relaci&#xF3;n.</p><h4 id="diagrama-de-chen-2">Diagrama de Chen</h4><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://cesarzavaleta.dev/content/images/2026/08/mer-caso2-chen-1.png" class="kg-image" alt="Ejemplos de modelo entidad-relaci&#xF3;n: 4 casos resueltos" loading="lazy" width="2000" height="1698" srcset="https://cesarzavaleta.dev/content/images/size/w600/2026/08/mer-caso2-chen-1.png 600w, https://cesarzavaleta.dev/content/images/size/w1000/2026/08/mer-caso2-chen-1.png 1000w, https://cesarzavaleta.dev/content/images/size/w1600/2026/08/mer-caso2-chen-1.png 1600w, https://cesarzavaleta.dev/content/images/size/w2400/2026/08/mer-caso2-chen-1.png 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Caso 03 &#xB7; Notaci&#xF3;n de Chen. El c&#xED;rculo indica jerarqu&#xED;a total y el arco, exclusiva.</span></figcaption></figure><h4 id="diagrama-de-martin-2">Diagrama de Martin</h4><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://cesarzavaleta.dev/content/images/2026/08/mer-caso2-martin-1.png" class="kg-image" alt="Ejemplos de modelo entidad-relaci&#xF3;n: 4 casos resueltos" loading="lazy" width="2000" height="1711" srcset="https://cesarzavaleta.dev/content/images/size/w600/2026/08/mer-caso2-martin-1.png 600w, https://cesarzavaleta.dev/content/images/size/w1000/2026/08/mer-caso2-martin-1.png 1000w, https://cesarzavaleta.dev/content/images/size/w1600/2026/08/mer-caso2-martin-1.png 1600w, https://cesarzavaleta.dev/content/images/2026/08/mer-caso2-martin-1.png 2020w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Caso 03 &#xB7; Notaci&#xF3;n de Martin. Los subtipos van anidados; por eso esta notaci&#xF3;n no distingue una jerarqu&#xED;a total de una parcial.</span></figcaption></figure><blockquote>Chen y Martin no representan la generalizaci&#xF3;n igual. Chen emplea un s&#xED;mbolo dedicado &#x2014;tri&#xE1;ngulo invertido, c&#xED;rculo y arco&#x2014; que permite expresar con precisi&#xF3;n si la jerarqu&#xED;a es total o parcial y si es exclusiva o solapada. Martin la resuelve anidando los subtipos dentro de la caja del supertipo: es m&#xE1;s compacto y m&#xE1;s cercano a la implementaci&#xF3;n, pero el anidamiento no distingue una jerarqu&#xED;a total de una parcial.</blockquote><h3 id="caso-04-%C2%B7-control-de-pagos">Caso 04 &#xB7; Control de pagos</h3><h4 id="el-caso-3">El caso</h4><blockquote>&#x2022; Una bodega requiere controlar las cuentas de cr&#xE9;dito que se crean para los clientes. Un cliente puede tener una cuenta con un monto m&#xE1;ximo de consumo o realizar un pago previo y consumirlo en el tiempo. &#x2022; La bodega entrega un ticket al cliente que abre una cuenta a fin de que ese ticket sea presentado por la persona que realiza una compra, debido a que el cliente o cualquier familiar o persona que porte el ticket puede hacer uso de &#xE9;ste. &#x2022; El monto consumido se debita del cr&#xE9;dito otorgado o saldo restante, hasta que quede agotado. Queda a criterio de la due&#xF1;a de la bodega otorgar cr&#xE9;ditos adicionales, para lo cual se abre una nueva cuenta y se entrega un nuevo ticket. &#x2022; As&#xED; mismo, la due&#xF1;a puede suspender una cuenta, sin importar si se agot&#xF3; el cr&#xE9;dito o saldo.</blockquote><h3 id="la-soluci%C3%B3n-3">La soluci&#xF3;n</h3><p>Entidades identificadas</p><p>CLIENTE &#xB7; CUENTA &#xB7; TICKET &#xB7; MOVIMIENTO (d&#xE9;bil)</p><p><strong>Atributos</strong></p>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rl8:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidad</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rl9:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Atributos</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rla:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">CLIENTE</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rlb:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">cod_cliente, nom_cliente, dni_cliente, tel_cliente</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rlc:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">CUENTA</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rld:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">cod_cuenta, tip_cuenta, mon_cuenta, sal_cuenta, fec_cuenta, est_cuenta</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rle:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">TICKET</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rlf:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">cod_ticket, bar_ticket, fec_ticket, est_ticket</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rlg:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">MOVIMIENTO (d&#xE9;bil)</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rlh:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">num_movimiento (identificador parcial), fec_movimiento, mon_movimiento, tip_movimiento, por_movimiento</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p> distingue las dos modalidades del enunciado: cr&#xE9;dito con monto m&#xE1;ximo o pago previo consumible. est_cuenta registra si est&#xE1; activa, agotada o suspendida. por_movimiento guarda qui&#xE9;n present&#xF3; el ticket, que puede no ser el titular.Relaciones y cardinalidades</p>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rli:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Relaci&#xF3;n</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rlj:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidades</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rlk:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Cardinalidades</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rll:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Tipo</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rlm:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">abre</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rln:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">CLIENTE &#x2194; CUENTA</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rlo:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">CLIENTE (1,n) &#xB7; CUENTA (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rlp:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rlq:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">respalda</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rlr:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">CUENTA &#x2194; TICKET</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rls:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">CUENTA (1,1) &#xB7; TICKET (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rlt:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:1</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rlu:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">registra</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rlv:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">CUENTA &#x2194; MOVIMIENTO</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rm0:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">CUENTA (0,n) &#xB7; MOVIMIENTO (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rm1:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p><strong>Decisiones de dise&#xF1;o</strong></p><p>CLIENTE&#x2013;CUENTA es 1:N y no 1:1 porque el enunciado dice que, si la due&#xF1;a otorga un cr&#xE9;dito adicional, se abre una cuenta nueva con un ticket nuevo. Un mismo cliente acumula varias cuentas a lo largo del tiempo.El ticket se modela como entidad propia y no como atributo de CUENTA porque tiene datos propios (c&#xF3;digo de barras, fecha de emisi&#xF3;n, estado) y circula entre personas distintas del titular. La relaci&#xF3;n es 1:1, la &#xFA;nica del laboratorio.MOVIMIENTO es entidad d&#xE9;bil con dependencia de identificaci&#xF3;n: los movimientos se numeran dentro de cada cuenta, as&#xED; que dos cuentas distintas pueden tener ambas su movimiento n&#xFA;mero 1. Su clave real es cod_cuenta + num_movimiento.est_cuenta es obligatorio y no se deduce del saldo: el enunciado permite suspender una cuenta sin importar si el cr&#xE9;dito se agot&#xF3;, de modo que una cuenta con saldo puede estar suspendida y otra sin saldo puede seguir activa.La cardinalidad m&#xED;nima de CUENTA en registra es cero: una cuenta reci&#xE9;n abierta todav&#xED;a no tiene movimientos.</p><h4 id="diagrama-de-chen-3">Diagrama de Chen</h4><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://cesarzavaleta.dev/content/images/2026/08/mer-caso4-chen.png" class="kg-image" alt="Ejemplos de modelo entidad-relaci&#xF3;n: 4 casos resueltos" loading="lazy" width="2000" height="1714" srcset="https://cesarzavaleta.dev/content/images/size/w600/2026/08/mer-caso4-chen.png 600w, https://cesarzavaleta.dev/content/images/size/w1000/2026/08/mer-caso4-chen.png 1000w, https://cesarzavaleta.dev/content/images/size/w1600/2026/08/mer-caso4-chen.png 1600w, https://cesarzavaleta.dev/content/images/size/w2400/2026/08/mer-caso4-chen.png 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Caso 04 &#xB7; Notaci&#xF3;n de Chen. respalda es la &#xFA;nica relaci&#xF3;n 1:1 del laboratorio.</span></figcaption></figure><h4 id="diagrama-de-martin-3">Diagrama de Martin</h4><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://cesarzavaleta.dev/content/images/2026/08/mer-caso4-martin.png" class="kg-image" alt="Ejemplos de modelo entidad-relaci&#xF3;n: 4 casos resueltos" loading="lazy" width="2000" height="1494" srcset="https://cesarzavaleta.dev/content/images/size/w600/2026/08/mer-caso4-martin.png 600w, https://cesarzavaleta.dev/content/images/size/w1000/2026/08/mer-caso4-martin.png 1000w, https://cesarzavaleta.dev/content/images/size/w1600/2026/08/mer-caso4-martin.png 1600w, https://cesarzavaleta.dev/content/images/size/w2400/2026/08/mer-caso4-martin.png 2400w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Caso 04 &#xB7; Notaci&#xF3;n de Martin. La clave de MOVIMIENTO es compuesta: COD_CUENTA + NUM_MOVIMIENTO.</span></figcaption></figure><h3 id="resumen-de-los-cuatro-casos">Resumen de los cuatro casos</h3>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rm2:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Caso</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rm3:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Conceptos que ejercita</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rm4:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">01 &#xB7; Grupos empresariales</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rm5:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Cadena de relaciones 1:N &#xB7; Relaci&#xF3;n reflexiva (grado 1) &#xB7; Roles</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rm6:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">02 &#xB7; Elecciones universitarias</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rm7:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidad d&#xE9;bil &#xB7; Dependencia de identificaci&#xF3;n &#xB7; Cardinalidad num&#xE9;rica (6,6) &#xB7; Relaci&#xF3;n 1:1 &#xB7; Dos relaciones M:N &#xB7; Atributo de relaci&#xF3;n &#xB7; Dos relaciones entre el mismo par de entidades</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rm8:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">03 &#xB7; Dise&#xF1;o de encuestas</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rm9:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Generalizaci&#xF3;n exclusiva total &#xB7; Herencia de atributos &#xB7; Atributos de relaci&#xF3;n M:N &#xB7; Cu&#xE1;ndo algo no debe ser entidad</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rma:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">04 &#xB7; Control de pagos</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rmb:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Relaci&#xF3;n 1:1 &#xB7; Entidad d&#xE9;bil &#xB7; Clave compuesta &#xB7; Atributos de estado</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
]]></content:encoded></item><item><title><![CDATA[Modelo entidad-relación (MER): guía completa con ejemplos]]></title><description><![CDATA[Aprende qué es el modelo entidad-relación (MER), entidades, cardinalidades y generalización. Con notación de Chen y Martin, y un caso práctico resuelto.]]></description><link>https://cesarzavaleta.dev/modelo-entidad-relacion-mer/</link><guid isPermaLink="false">6a7549c5f8edf9170672d766</guid><category><![CDATA[SQL]]></category><dc:creator><![CDATA[Cesar Eduardo Zavaleta Leon]]></dc:creator><pubDate>Fri, 07 Aug 2026 04:23:43 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1632406898177-95f7acd8854f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDMyfHxkYXRhYmFzZXxlbnwwfHx8fDE3ODcyMDIyNzF8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1632406898177-95f7acd8854f?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDMyfHxkYXRhYmFzZXxlbnwwfHx8fDE3ODcyMDIyNzF8MA&amp;ixlib=rb-4.1.0&amp;q=80&amp;w=2000" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos"><p>Antes de escribir una sola l&#xED;nea de CREATE TABLE hay una pregunta que decide si tu base de datos va a funcionar bien o va a ser un dolor de cabeza durante a&#xF1;os: &#xBF;qu&#xE9; datos existen realmente en este negocio y c&#xF3;mo se relacionan entre s&#xED;? </p><p>Responder a esa pregunta es lo que llamamos modelado de datos. Y aunque suene abstracto, en la pr&#xE1;ctica es lo m&#xE1;s parecido a hacer los planos antes de construir una casa: nadie levanta paredes y despu&#xE9;s decide d&#xF3;nde va el ba&#xF1;o.</p><p>En este post vamos a recorrer todo el camino: qu&#xE9; es el modelado de datos, sus tres niveles, c&#xF3;mo se construye un modelo entidad-relaci&#xF3;n y las dos notaciones m&#xE1;s usadas para dibujarlo. Al final resolvemos cuatro casos completos con ambas notaciones.</p><h3 id="1-%C2%BFqu%C3%A9-es-el-modelado-de-datos">1. &#xBF;Qu&#xE9; es el modelado de datos?</h3><p>El modelado de datos ayuda a definir y estructurar los datos en el contexto de los procesos empresariales a los que sirven. No es un ejercicio acad&#xE9;mico: es lo que sostiene activamente el desarrollo del software.</p>
<p>Adem&#xE1;s, modelar te obliga a tomar decisiones que despu&#xE9;s son car&#xED;simas de cambiar:</p>
<ul>
<li>C&#xF3;mo se van a almacenar los datos.</li>
<li>C&#xF3;mo se van a compartir entre m&#xF3;dulos, sistemas o equipos.</li>
<li>C&#xF3;mo se van a actualizar.</li>
<li>C&#xF3;mo se van a aprovechar para generar valor.</li>
</ul>
<h4 id="los-tres-niveles-del-modelado">Los tres niveles del modelado</h4><p>El proceso no se hace de un solo golpe: se descompone en tres modelos que se encadenan, porque la salida de uno es la entrada del siguiente.</p><figure class="kg-card kg-image-card"><img src="https://cesarzavaleta.dev/content/images/2026/08/niveles-modelado-datos-min.svg" class="kg-image" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos" loading="lazy" width="960" height="250"></figure><h3 id="2-el-modelo-conceptual">2. El modelo conceptual</h3><p>El modelo conceptual, tambi&#xE9;n llamado <strong>entidad-relaci&#xF3;n (MER)</strong>, fue expuesto por Peter P. Chen en 1976. Es una t&#xE9;cnica de representaci&#xF3;n gr&#xE1;fica de un conjunto de datos &#x2014;las <em>entidades</em>&#x2014; y de las relaciones existentes entre ellos.</p>
<p>Sus caracter&#xED;sticas principales son las siguientes:</p>
<ul>
<li><strong>Refleja solo la existencia de los datos, no sus transformaciones.</strong> Dice <em>qu&#xE9; hay</em>, no <em>qu&#xE9; se hace con ello</em>. Ojo con esto, porque es la confusi&#xF3;n n&#xFA;mero uno de quien viene de los diagramas de flujo.</li>
<li><strong>Incluye todos los datos del sistema en estudio</strong>, por lo que est&#xE1; orientado a cualquier tipo de aplicaci&#xF3;n.</li>
<li><strong>Es independiente del sistema operativo</strong> en el que vaya a residir la base de datos.</li>
<li><strong>No es restrictivo</strong> respecto al espacio, al almacenamiento ni al tiempo de ejecuci&#xF3;n.</li>
<li><strong>Es f&#xE1;cil de mantener</strong> y est&#xE1; abierto a la evoluci&#xF3;n del sistema.</li>
</ul>
<p>Esa independencia es justo lo que lo hace valioso: un buen MER sigue siendo v&#xE1;lido si ma&#xF1;ana cambias de MySQL a PostgreSQL, o si migras de un servidor local a la nube.</p>
<h3 id="3-las-piezas-del-mer">3. Las piezas del MER</h3><p>El modelo entidad-relaci&#xF3;n est&#xE1; formado, como su nombre indica, por <strong>entidades</strong> y <strong>relaciones</strong>. Vamos pieza por pieza.</p>
<h4 id="31-entidad">3.1 Entidad</h4><p>Una entidad es un ente real o irreal que existe y del cual se desea almacenar informaci&#xF3;n.</p>
<p>Que sea &quot;irreal&quot; no es un capricho: un <em>pedido</em>, una <em>matr&#xED;cula</em> o una <em>reserva</em> no son objetos que puedas tocar, pero existen conceptualmente y necesitas guardar informaci&#xF3;n sobre ellos.</p>
<p>Una entidad es un conjunto de <strong>ocurrencias</strong>; es decir, un conjunto de datos de un determinado individuo, objeto o cosa. Y a cada uno de los datos de una ocurrencia se le llama <strong>atributo</strong>.</p>
<figure class="kg-card kg-image-card"><img src="https://cesarzavaleta.dev/content/images/2026/08/que-es-una-entidad.svg" class="kg-image" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos" loading="lazy" width="980" height="400"></figure><h5 id="entidades-regulares-fuertes-o-propias">Entidades regulares (fuertes o propias)</h5><p>Son aquellas que tienen existencia por s&#xED; mismas y cuyas ocurrencias son identificables por s&#xED; mismas. Se representan con un rect&#xE1;ngulo y un nombre, que suele ser un sustantivo.</p>
<p>CLIENTE, PRODUCTO, PROVEEDOR: todas existen sin depender de nadie.</p>
<h5 id="entidades-d%C3%A9biles">Entidades d&#xE9;biles</h5><p>Son aquellas cuyas ocurrencias solo son identificables por estar asociadas a otra u otras entidades; es decir, alguno de los atributos que las identifican se refiere a otra entidad.</p>
<p>El ejemplo cl&#xE1;sico: una L&#xCD;NEA DE PEDIDO no significa nada por s&#xED; sola. &quot;L&#xED;nea n&#xFA;mero 3&quot; no identifica nada, porque necesitas saber <em>l&#xED;nea 3 de qu&#xE9; pedido</em>.</p>
<blockquote>
<p><strong>Nota.</strong> En Oracle Data Modeler las entidades d&#xE9;biles se representan igual que las regulares, pero con peculiaridades propias de la herramienta.</p>
</blockquote>
<h4 id="32-relaci%C3%B3n">3.2 Relaci&#xF3;n</h4><p>Una relaci&#xF3;n es una asociaci&#xF3;n o correspondencia entre diferentes entidades. Se representa mediante un rombo con un nombre que es un verbo.</p>
<p>Ese detalle del verbo importa m&#xE1;s de lo que parece: si no puedes nombrar la relaci&#xF3;n con un verbo claro (<em>compra</em>, <em>suministra</em>, <em>notifica</em>, <em>imparte</em>), probablemente no tienes clara la regla de negocio que est&#xE1;s modelando.</p>
<figure class="kg-card kg-image-card"><img src="https://cesarzavaleta.dev/content/images/2026/08/que-es-una-relacion.svg" class="kg-image" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos" loading="lazy" width="980" height="330"></figure><h4 id="33-grado-de-una-relaci%C3%B3n">3.3 Grado de una relaci&#xF3;n</h4><p>El grado se define como el <strong>n&#xFA;mero de entidades que participan en la relaci&#xF3;n</strong>:</p>
<ul>
<li><strong>Grado 1 (reflexiva).</strong> Una entidad se relaciona consigo misma. Ejemplo: un EMPLEADO <em>supervisa</em> a otro EMPLEADO.</li>
<li><strong>Grado 2 (binaria).</strong> Intervienen dos entidades. Es, con diferencia, el caso m&#xE1;s frecuente.</li>
<li><strong>Grado 3 (ternaria).</strong> Intervienen tres entidades. Y as&#xED; sucesivamente.</li>
</ul>
<h4 id="34-tipo-de-correspondencia">3.4 Tipo de correspondencia</h4><p>El tipo de correspondencia representa la participaci&#xF3;n en la relaci&#xF3;n de cada una de las entidades afectadas; es decir, el n&#xFA;mero <strong>m&#xE1;ximo</strong> de ocurrencias de cada entidad que pueden intervenir en una ocurrencia de la relaci&#xF3;n.</p>
<p>Hay tres tipos:</p>
<ul>
<li><strong>1:1 (una a una).</strong> A cada ocurrencia de una entidad le corresponde como m&#xE1;ximo una ocurrencia de la otra, y viceversa. <em>Ejemplo: un pa&#xED;s tiene una capital y una capital pertenece a un pa&#xED;s.</em></li>
<li><strong>1:N (una a muchas).</strong> A cada ocurrencia de la primera entidad le corresponden varias ocurrencias de la segunda, mientras que a cada ocurrencia de la segunda le corresponde una sola de la primera. <em>Ejemplo: un cliente realiza muchos pedidos, pero cada pedido es de un solo cliente.</em></li>
<li><strong>M:N (muchas a muchas).</strong> A cada ocurrencia de la primera entidad pueden corresponderle varias ocurrencias de la segunda, y viceversa. <em>Ejemplo: un alumno cursa varias asignaturas y una asignatura tiene varios alumnos.</em></li>
</ul>
<h4 id="35-cardinalidad">3.5 Cardinalidad</h4><p>Aqu&#xED; est&#xE1; la parte que m&#xE1;s se atraganta, as&#xED; que vamos despacio.</p>
<p>La cardinalidad mide el m&#xED;nimo y el m&#xE1;ximo de ocurrencias de una entidad que pueden estar relacionadas con una ocurrencia de la otra entidad que participa en la relaci&#xF3;n. Se anota una cardinalidad a cada lado de la relaci&#xF3;n.</p>
<p>La clave para no perderse es que la cardinalidad se escribe como <strong>(m&#xED;nimo, m&#xE1;ximo)</strong>:</p>
<ul>
<li>El <strong>m&#xED;nimo</strong> responde a: <em>&#xBF;es obligatorio?</em> &#x2192; <code>0</code> = no, <code>1</code> = s&#xED;.</li>
<li>El <strong>m&#xE1;ximo</strong> responde a: <em>&#xBF;cu&#xE1;ntos como mucho?</em> &#x2192; <code>1</code> = uno, <code>n</code> = muchos.</li>
</ul>
<table>
<thead>
<tr>
<th>Cardinalidad</th>
<th>Definici&#xF3;n</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>(1,1)</strong></td>
<td>A cada elemento de la entidad le corresponde uno y solo uno en la otra entidad <em>(obligatoriedad)</em>.</td>
</tr>
<tr>
<td><strong>(0,1)</strong></td>
<td>A cada elemento de la entidad le puede corresponder uno o ning&#xFA;n elemento en la otra entidad <em>(no obligatoriedad)</em>.</td>
</tr>
<tr>
<td><strong>(1,n)</strong></td>
<td>A cada elemento de la entidad le corresponde uno o m&#xE1;s elementos en la otra entidad <em>(obligatoriedad)</em>.</td>
</tr>
<tr>
<td><strong>(0,n)</strong></td>
<td>A cada elemento de la entidad le puede corresponder ninguno, uno o m&#xE1;s elementos en la otra entidad <em>(no obligatoriedad)</em>.</td>
</tr>
</tbody>
</table>
<p><em>Tabla: los cuatro tipos de cardinalidad que aparecen en el an&#xE1;lisis de datos.</em></p>
<blockquote>
<p><strong>Truco de examen.</strong> Cuando dudes, traduce la cardinalidad a una frase con &quot;como m&#xED;nimo&quot; y &quot;como m&#xE1;ximo&quot;. Por ejemplo, (0,n) es &quot;como m&#xED;nimo ninguno y como m&#xE1;ximo muchos&quot;. Si la frase suena rara para tu caso, la cardinalidad est&#xE1; mal.</p>
</blockquote>
<h4 id="36-relaciones-d%C3%A9biles-dos-tipos-de-dependencia">3.6 Relaciones d&#xE9;biles: dos tipos de dependencia</h4><p>Cuando una entidad d&#xE9;bil se relaciona con la entidad fuerte de la que depende, esa relaci&#xF3;n puede ser de dos tipos:</p>
<ul>
<li><strong>Dependencia de existencia.</strong> Las ocurrencias de la entidad d&#xE9;bil no pueden existir si desaparece la ocurrencia fuerte de la que dependen. Estas se tratan como si fueran una relaci&#xF3;n entre dos entidades regulares.</li>
<li><strong>Dependencia de identificaci&#xF3;n.</strong> Se cumple la dependencia de existencia y, adem&#xE1;s, la entidad d&#xE9;bil no puede identificarse &#xFA;nicamente con sus atributos propios: necesita a&#xF1;adir la clave de la entidad regular de la que depende.</li>
</ul>
<p>La diferencia pr&#xE1;ctica es sencilla: en la dependencia de existencia el problema es <em>sobrevivir</em>; en la de identificaci&#xF3;n, adem&#xE1;s, el problema es <em>tener nombre propio</em>.</p>
<h4 id="37-identificadores-y-claves">3.7 Identificadores y claves</h4><p>Aqu&#xED; cerramos el vocabulario b&#xE1;sico:</p>
<ul>
<li><strong>Ocurrencia.</strong> Conjunto de atributos de un determinado elemento de una entidad o relaci&#xF3;n. Una fila, para entendernos.</li>
<li><strong>Atributo.</strong> La unidad indivisible de una entidad o relaci&#xF3;n. Sirve para identificar y definir a la entidad o a la relaci&#xF3;n.</li>
<li><strong>Identificador (superclave o determinante).</strong> Conjunto de uno o m&#xE1;s atributos que permiten identificar de forma &#xFA;nica una ocurrencia de una entidad dentro de un conjunto de ellas.</li>
<li><strong>Claves candidatas.</strong> Identificadores m&#xED;nimos, es decir, aquellos a los que no les sobra ning&#xFA;n atributo. De entre ellas se elige una como <strong>clave primaria</strong>, que es la que identifica un&#xED;vocamente cada ocurrencia.</li>
<li><strong>Clave ajena (for&#xE1;nea).</strong> El atributo o conjunto de atributos de una entidad que son clave primaria en otra entidad. Es el pegamento que une las tablas.</li>
</ul>
<h3 id="4-generalizaci%C3%B3n-supertipos-y-subtipos">4. Generalizaci&#xF3;n: supertipos y subtipos</h3><p>A veces varias entidades comparten tantos atributos que separarlas es absurdo, pero unirlas del todo tampoco funciona. Ah&#xED; entra la <strong>generalizaci&#xF3;n</strong>.</p>
<p>Una entidad o <strong>supertipo</strong> puede descomponerse en subentidades o <strong>subtipos</strong>; a esto se le conoce como jerarqu&#xED;as entre entidades. Los atributos del supertipo son heredados por los subtipos, pero no al rev&#xE9;s. Una generalizaci&#xF3;n se anota en el modelo mediante un tri&#xE1;ngulo invertido.</p>
<p>Si has visto herencia en programaci&#xF3;n orientada a objetos, es exactamente la misma idea.</p>
<p>Para trabajar con jerarqu&#xED;as hay que manejar dos pares de conceptos.</p>
<h4 id="41-totalidad-y-parcialidad">4.1 Totalidad y parcialidad</h4><p>Una jerarqu&#xED;a es <strong>total</strong> si los subtipos cubren todos los estados posibles del supertipo. Si solo cubrieran parte de esos estados, ser&#xED;a <strong>parcial</strong>.</p>
<ul>
<li>Si es total, se pone un c&#xED;rculo encima del tri&#xE1;ngulo invertido.</li>
<li>Si es parcial, no se pone nada.</li>
</ul>
<p><em>Caso de totalidad:</em> un supertipo PERSONA con los subtipos NI&#xD1;O, ADOLESCENTE, ADULTO y ADULTO MAYOR. No existen otros subtipos que cubran la vida de una persona, as&#xED; que la jerarqu&#xED;a es total. Si faltara uno o varios de esos subtipos, ser&#xED;a parcial.</p>
<blockquote>
<p><strong>Nota.</strong> En Data Modeler esta situaci&#xF3;n no se contempla.</p>
</blockquote>
<h4 id="42-exclusiva-o-solapada">4.2 Exclusiva o solapada</h4><p>Una jerarqu&#xED;a es <strong>solapada</strong> si puede haber ocurrencias que pertenezcan a m&#xE1;s de un subtipo. Si las ocurrencias fueran disjuntas, ser&#xED;a <strong>exclusiva</strong>.</p>
<p>Si es exclusiva, se representa mediante un arco.</p>
<p><em>Caso de solapada:</em> un supertipo PERSONA con dos subtipos, TRABAJADOR y ESTUDIANTE. Puede haber personas que solo estudien, personas que solo trabajen o personas que hagan ambas cosas. Si no se cumpliera el caso de &quot;ambas cosas&quot;, ser&#xED;a exclusiva.</p>
<h4 id="43-las-cuatro-combinaciones">4.3 Las cuatro combinaciones</h4><p>Combinando ambos criterios salen cuatro jerarqu&#xED;as posibles en notaci&#xF3;n de Chen:</p>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rev:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Jerarqu&#xED;a</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rf0:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">C&#xED;rculo (total)</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rf1:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Arco (exclusiva)</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rf2:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">Solapada parcial</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rf3:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">&#x2717;</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rf4:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">&#x2717;</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rf5:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">Solapada total</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rf6:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">&#x2713;</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rf7:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">&#x2717;</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rf8:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">Exclusiva parcial</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rf9:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">&#x2717;</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rfa:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">&#x2713;</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rfb:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">Exclusiva total</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rfc:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">&#x2713;</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rfd:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">&#x2713;</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<blockquote>
<p><strong>Regla mnemot&#xE9;cnica.</strong> &#x1F535; C&#xED;rculo = total, porque cubre todo y por eso se &quot;cierra&quot; el c&#xED;rculo. &#x1F319; Arco = exclusiva, porque el arco separa y no deja que se mezclen.</p>
</blockquote>
<h3 id="5-metodolog%C3%ADas-para-confeccionar-el-mer">5. Metodolog&#xED;as para confeccionar el MER</h3><p>Ya sabemos <em>qu&#xE9;</em> hay que representar. Falta el <em>c&#xF3;mo dibujarlo</em>. Existen dos notaciones dominantes.</p>
<h4 id="51-metodolog%C3%ADa-de-chen">5.1 Metodolog&#xED;a de Chen</h4><p>La notaci&#xF3;n de Chen suele resultar muy efectiva a la hora de modelar conceptos del mundo real, porque representa las entidades que intervienen y las relaciones entre ellas.</p>
<p>Los diagramas de Chen son un primer paso para comprender la estructura de la base de datos y resultan muy adecuados para lluvias de ideas y diagramas r&#xE1;pidos.</p>
<p>Existen muchas herramientas capaces de desarrollar esta metodolog&#xED;a. Una de las m&#xE1;s efectivas, gratuita y online, es <a href="https://erdplus.com/?ref=cesarzavaleta.dev">ERDPlus</a>.</p>
<h5 id="simbolog%C3%ADa-de-chen">Simbolog&#xED;a de Chen</h5><figure class="kg-card kg-image-card"><img src="https://cesarzavaleta.dev/content/images/2026/08/simbologia-chen.svg" class="kg-image" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos" loading="lazy" width="980" height="580"></figure><p><em>Tabla: simbolog&#xED;a de la metodolog&#xED;a de Chen.</em>Hay una l&#xF3;gica muy elegante detr&#xE1;s: lo doble es lo d&#xE9;bil o lo complejo. Rect&#xE1;ngulo doble = entidad d&#xE9;bil. Rombo doble = relaci&#xF3;n M:N.</p><h4 id="52-metodolog%C3%ADa-de-martin">5.2 Metodolog&#xED;a de Martin</h4><p>La metodolog&#xED;a de Martin tambi&#xE9;n es bastante efectiva a la hora de modelar el mundo real en entidades y las interrelaciones entre estas. Los diagramas de Martin son una primera aproximaci&#xF3;n para entender c&#xF3;mo ser&#xE1; la base de datos futura.</p>
<p>Es una metodolog&#xED;a m&#xE1;s simple que la anterior: adem&#xE1;s de la entidad regular y la d&#xE9;bil, las relaciones est&#xE1;n basadas en l&#xED;neas. Toda la informaci&#xF3;n de cardinalidad viaja en la propia l&#xED;nea:</p>
<ul>
<li>Si la l&#xED;nea es <strong>discontinua</strong>, indica opcionalidad: la cardinalidad m&#xED;nima es 0.</li>
<li>Si la l&#xED;nea es <strong>continua</strong>, indica obligatoriedad: la cardinalidad m&#xED;nima es 1.</li>
<li>La cardinalidad m&#xE1;xima se detecta con el s&#xED;mbolo <code>&lt;</code> al final de la l&#xED;nea, la famosa &quot;pata de gallo&quot;: si la l&#xED;nea lo tiene, indica muchos; si no lo tiene, uno.</li>
</ul>
<p>Y ya est&#xE1;. Con esas tres reglas lees cualquier diagrama de Martin.</p>
<h5 id="simbolog%C3%ADa-de-martin">Simbolog&#xED;a de Martin</h5><figure class="kg-card kg-image-card"><img src="https://cesarzavaleta.dev/content/images/2026/08/simbologia-martin.svg" class="kg-image" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos" loading="lazy" width="980" height="590"></figure><h4 id="53-%C2%BFcu%C3%A1l-uso">5.3 &#xBF;Cu&#xE1;l uso?</h4>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rg8:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px; min-height: 1em; color: var(--c-texPri); -webkit-text-fill-color: var(--c-texTer);"></div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rg9:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Chen</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rga:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Martin</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rgb:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">Legibilidad para principiantes</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rgc:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Alta: cada concepto tiene su s&#xED;mbolo</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rgd:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Media: hay que aprender el c&#xF3;digo de las l&#xED;neas</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rge:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">Espacio que ocupa</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rgf:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Mucho (cada atributo es una elipse)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rgg:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Poco (atributos dentro de la caja)</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rgh:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">Mejor para</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rgi:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Ense&#xF1;ar, tormenta de ideas, diagramas r&#xE1;pidos</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rgj:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Modelos grandes, paso a implementaci&#xF3;n</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rgk:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">Herramienta sugerida</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rgl:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">ERDPlus</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rgm:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Oracle SQL Developer Data Modeler</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>En la pr&#xE1;ctica: Chen para pensar, Martin para trabajar.</p><h3 id="6-caso-pr%C3%A1ctico-resuelto-el-taller-de-reparaciones">6. Caso pr&#xE1;ctico resuelto: el taller de reparaciones</h3><p>Nada de esto se asienta hasta que lo aplicas. Vamos con un caso completo.</p><h4 id="el-enunciado">El enunciado</h4><blockquote>Taller Mec&#xE1;nico Nor Andino atiende reparaciones de veh&#xED;culos livianos y quiere dejar atr&#xE1;s sus cuadernos de registro. El due&#xF1;o le explica al analista c&#xF3;mo funciona el negocio:Cada cliente que llega al taller queda registrado con un c&#xF3;digo interno, su nombre completo, su DNI, un tel&#xE9;fono de contacto y su direcci&#xF3;n. Un cliente puede traer al taller m&#xE1;s de un veh&#xED;culo, y de hecho varios clientes de flota traen tres o cuatro.De cada veh&#xED;culo se anota la placa, la marca, el modelo y el a&#xF1;o de fabricaci&#xF3;n. La placa es &#xFA;nica, as&#xED; que sirve para identificarlo.Cuando el mec&#xE1;nico revisa un veh&#xED;culo, registra cada aver&#xED;a detectada por separado: le asigna un c&#xF3;digo, escribe una descripci&#xF3;n, la fecha en que se detect&#xF3; y el importe presupuestado de la reparaci&#xF3;n. Cada aver&#xED;a queda en estado <em>notificada</em> hasta que el cliente decide si la aprueba o la rechaza, porque nada se repara sin su visto bueno.Una vez terminados los trabajos, el taller emite una &#xFA;nica factura que agrupa todas las aver&#xED;as aprobadas de ese veh&#xED;culo. De la factura se guarda el n&#xFA;mero, la fecha de emisi&#xF3;n y el total. Puede haber aver&#xED;as rechazadas que nunca lleguen a facturarse.Reparar una aver&#xED;a suele exigir cambiar repuestos. De cada repuesto se registra su c&#xF3;digo, descripci&#xF3;n, precio de venta y stock disponible. Una misma aver&#xED;a puede consumir varios repuestos, y un mismo repuesto se usa en muchas aver&#xED;as distintas; por eso interesa saber cu&#xE1;ntas unidades se consumieron en cada caso.Los repuestos llegan al almac&#xE9;n del taller por medio de proveedores, identificados por su c&#xF3;digo, raz&#xF3;n social, tel&#xE9;fono y categor&#xED;a. Un proveedor abastece varios repuestos y un mismo repuesto puede comprarse a m&#xE1;s de un proveedor, as&#xED; que conviene registrar de cada compra la cantidad, la fecha y el precio pactado.Se pide: dise&#xF1;ar el modelo entidad-relaci&#xF3;n con la metodolog&#xED;a de Chen y con la de Martin.</blockquote><h4 id="paso-1-identificar-las-entidades">Paso 1: identificar las entidades</h4><p>Una t&#xE9;cnica sencilla: subraya los sustantivos del enunciado y preg&#xFA;ntate de cu&#xE1;les necesitas guardar informaci&#xF3;n. Aqu&#xED; salen seis: CLIENTE &#xB7; VEHICULO &#xB7; AVERIA &#xB7; FACTURA &#xB7; REPUESTO &#xB7; PROVEEDOR</p><blockquote>Atenci&#xF3;n a este detalle, que es el que m&#xE1;s se falla. Ser&#xED;a tentador guardar la placa como un simple atributo de CLIENTE y ahorrarse una entidad. Pero el enunciado dice que un cliente puede traer m&#xE1;s de un veh&#xED;culo, y un atributo solo admite un valor. Si metes la placa dentro de CLIENTE, el modelo te obliga a duplicar el cliente entero por cada carro que traiga.La regla pr&#xE1;ctica: si algo puede repetirse para una misma ocurrencia y adem&#xE1;s tiene datos propios, no es un atributo, es una entidad.</blockquote><h4 id="paso-2-identificar-los-atributos">Paso 2: identificar los atributos</h4><p>De cada entidad extraemos los datos que el enunciado menciona. La clave primaria va en negrita:</p><figure class="kg-card kg-image-card"><img src="https://cesarzavaleta.dev/content/images/2026/08/identificar-atributos.svg" class="kg-image" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos" loading="lazy" width="980" height="530"></figure><p>F&#xED;jate en la convenci&#xF3;n de nombres: tres letras del dato + guion bajo + nombre de la entidad. Cuando el modelo crece a cuarenta tablas, saber de un vistazo a qu&#xE9; entidad pertenece cada columna te ahorra much&#xED;simo tiempo. Elige la convenci&#xF3;n que quieras, pero elige una y no la rompas nunca.Nota tambi&#xE9;n que pla_vehiculo es clave primaria y no hemos inventado un c&#xF3;digo artificial: cuando el mundo real ya te da un identificador &#xFA;nico y estable, &#xFA;salo.</p><h4 id="paso-3-identificar-las-relaciones-y-sus-cardinalidades">Paso 3: identificar las relaciones y sus cardinalidades</h4><p>Ahora los verbos. Y con cada verbo, la pregunta de la cardinalidad: <em>&#xBF;cu&#xE1;ntos como m&#xED;nimo y cu&#xE1;ntos como m&#xE1;ximo?</em></p><figure class="kg-card kg-image-card"><img src="https://cesarzavaleta.dev/content/images/2026/08/relaciones-cardinalidades.svg" class="kg-image" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos" loading="lazy" width="980" height="460"></figure><p>La cardinalidad que ponemos junto a cada entidad indica en cu&#xE1;ntas ocurrencias de la relaci&#xF3;n participa cada ocurrencia de esa entidad. Le&#xE1;moslas en voz alta, que es la &#xFA;nica forma de validarlas:</p><p>CLIENTE (1,n) &#x2192; un cliente registrado tiene al menos un veh&#xED;culo y puede tener muchos.</p><p>VEHICULO (1,1) &#x2192; cada veh&#xED;culo pertenece a un &#xFA;nico cliente, obligatoriamente.</p><p>AVERIA (0,1) &#x2192; una aver&#xED;a puede no estar en ninguna factura (si el cliente la rechaz&#xF3;) o estar en una sola. </p><p>Aqu&#xED; es donde el enunciado nos oblig&#xF3; a poner un cero, y por eso conviene leer el enunciado buscando las excepciones.FACTURA (1,n) &#x2192; una factura no existe vac&#xED;a: agrupa al menos una aver&#xED;a.</p><h4 id="paso-4-los-atributos-de-las-relaciones">Paso 4: los atributos de las relaciones</h4><p>Dos de las relaciones llevan atributos propios, y esto es importante:</p>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":rec:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Relaci&#xF3;n</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":red:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Atributos propios</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ree:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">requiere</span> (AVERIA &#x2194; REPUESTO)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":ref:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><div class="notion-inline-code-container" style="display:inline"><span style="font-family:&quot;SFMono-Regular&quot;, Menlo, Consolas, &quot;PT Mono&quot;, &quot;Liberation Mono&quot;, Courier, monospace;line-height:normal;background:rgba(135,131,120,.15);color:#EB5757;border-radius:4px;font-size:85%;padding:0.2em 0.4em;position:relative;bottom:0.065em" data-token-index="0" spellcheck="false" class="notion-enable-hover">cantidad</span></div> &#x2014; unidades de ese repuesto consumidas en esa aver&#xED;a</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":reg:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">suministra</span> (PROVEEDOR &#x2194; REPUESTO)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":reh:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><div class="notion-inline-code-container" style="display:inline"><span style="font-family:&quot;SFMono-Regular&quot;, Menlo, Consolas, &quot;PT Mono&quot;, &quot;Liberation Mono&quot;, Courier, monospace;line-height:normal;background:rgba(135,131,120,.15);color:#EB5757;border-radius:4px;font-size:85%;padding:0.2em 0.4em;position:relative;bottom:0.065em" data-token-index="0" spellcheck="false" class="notion-enable-hover">cantidad</span></div>, <div class="notion-inline-code-container" style="display:inline"><span style="font-family:&quot;SFMono-Regular&quot;, Menlo, Consolas, &quot;PT Mono&quot;, &quot;Liberation Mono&quot;, Courier, monospace;line-height:normal;background:rgba(135,131,120,.15);color:#EB5757;border-radius:4px;font-size:85%;padding:0.2em 0.4em;position:relative;bottom:0.065em" data-token-index="2" spellcheck="false" class="notion-enable-hover">fec_compra</span></div>, <div class="notion-inline-code-container" style="display:inline"><span style="font-family:&quot;SFMono-Regular&quot;, Menlo, Consolas, &quot;PT Mono&quot;, &quot;Liberation Mono&quot;, Courier, monospace;line-height:normal;background:rgba(135,131,120,.15);color:#EB5757;border-radius:4px;font-size:85%;padding:0.2em 0.4em;position:relative;bottom:0.065em" data-token-index="4" spellcheck="false" class="notion-enable-hover">pre_compra</span></div></div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>&#xBF;Por qu&#xE9; no pueden ir dentro de una entidad? Porque no pertenecen ni a una ni a la otra. El precio al que un proveedor te vendi&#xF3; un repuesto no es un dato del repuesto (cada proveedor te lo cobra distinto) ni del proveedor (te vende cosas distintas a precios distintos): es un dato del <em>hecho</em> de la compra.Regla pr&#xE1;ctica: si un dato solo tiene sentido cuando existen las dos ocurrencias a la vez, pertenece a la relaci&#xF3;n. Y las relaciones M:N son las que m&#xE1;s suelen tener atributos propios.</p><h4 id="paso-5-el-diagrama-de-chen">Paso 5: el diagrama de Chen</h4><figure class="kg-card kg-image-card"><img src="https://cesarzavaleta.dev/content/images/2026/08/diagrama-chen-taller_1.svg" class="kg-image" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos" loading="lazy" width="1040" height="1000"></figure><h4 id="paso-6-el-diagrama-de-martin">Paso 6: el diagrama de Martin</h4><figure class="kg-card kg-image-card"><img src="https://cesarzavaleta.dev/content/images/2026/08/diagrama-martin-taller.svg" class="kg-image" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos" loading="lazy" width="900" height="920"></figure><h2 id="caso-pr%C3%A1ctico-2-control-acad%C3%A9mico-de-una-universidad">Caso pr&#xE1;ctico 2: control acad&#xE9;mico de una universidad</h2><h3 id="el-enunciado-1">El enunciado</h3><blockquote>El &#xE1;rea de registros acad&#xE9;micos de una universidad quiere reemplazar sus hojas de c&#xE1;lculo por una base de datos. Esto es lo que le explican al analista:De cada alumno se registra un c&#xF3;digo interno, su nombre completo, su DNI, el correo institucional y la fecha en que ingres&#xF3;.Todo alumno pertenece a una &#xFA;nica carrera, y una carrera re&#xFA;ne a muchos alumnos. De cada carrera se guarda su c&#xF3;digo, su nombre y la duraci&#xF3;n en ciclos.Una asignatura se identifica por su c&#xF3;digo, y de ella se anota el nombre, el n&#xFA;mero de cr&#xE9;ditos y el ciclo en que se dicta. Cada asignatura pertenece a una sola carrera, mientras que una carrera ofrece muchas asignaturas.Cada asignatura tiene un docente responsable, y un mismo docente puede tener varias asignaturas a su cargo. Del docente se registra su c&#xF3;digo, nombre, especialidad y correo institucional.Un alumno se matricula en muchas asignaturas y una asignatura re&#xFA;ne a muchos alumnos matriculados. De cada matr&#xED;cula interesa saber la nota obtenida, la fecha en que se matricul&#xF3; y el n&#xFA;mero de intento, porque un alumno puede llevar la misma asignatura m&#xE1;s de una vez.Se pide: dise&#xF1;ar el modelo entidad-relaci&#xF3;n con la metodolog&#xED;a de Chen y con la de Martin.</blockquote><h3 id="paso-1-identificar-las-entidades-1">Paso 1: identificar las entidades</h3><p>ALUMNO &#xB7; CARRERA &#xB7; ASIGNATURA &#xB7; DOCENTE</p><blockquote>La trampa de este caso. Casi todo el mundo crea una entidad CALIFICACION o NOTA. Y es un error.Preg&#xFA;ntate: &#xBF;existe una nota por s&#xED; sola? No. Una nota solo existe cuando hay un alumno concreto y una asignatura concreta a la vez. No es un ente del que queramos guardar informaci&#xF3;n: es el dato que produce el cruce de dos entidades.Por eso la nota es un atributo de la relaci&#xF3;n matricula, no una entidad. F&#xED;jate en que es la trampa exactamente inversa a la del taller mec&#xE1;nico: all&#xED; sobraba un atributo que deb&#xED;a ser entidad (VEHICULO); aqu&#xED; sobra una entidad que debe ser atributo.</blockquote><h3 id="paso-2-identificar-los-atributos-1">Paso 2: identificar los atributos</h3>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r90:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidad</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r91:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Atributos</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r92:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">ALUMNO</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r93:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">cod_alumno</span>, nom_alumno, dni_alumno, ema_alumno (correo), ing_alumno (fecha de ingreso)</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r94:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">CARRERA</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r95:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">cod_carrera</span>, nom_carrera, dur_carrera (duraci&#xF3;n en ciclos)</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r96:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">ASIGNATURA</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r97:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">cod_asignatura</span>, nom_asignatura, cre_asignatura (cr&#xE9;ditos), cic_asignatura (ciclo)</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r98:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">DOCENTE</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r99:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">cod_docente</span>, nom_docente, esp_docente (especialidad), ema_docente (correo)</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>Misma convenci&#xF3;n que en el caso anterior: tres letras del dato + guion bajo + nombre de la entidad.</p><h3 id="paso-3-identificar-las-relaciones-y-sus-cardinalidades-1">Paso 3: identificar las relaciones y sus cardinalidades</h3>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r84:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Relaci&#xF3;n</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r85:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidades</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r86:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Cardinalidades</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r87:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Correspondencia</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r88:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">estudia</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r89:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">ALUMNO &#x2194; CARRERA</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8a:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">ALUMNO (1,1) &#xB7; CARRERA (1,n)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8b:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8c:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">ofrece</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8d:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">CARRERA &#x2194; ASIGNATURA</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8e:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">CARRERA (1,n) &#xB7; ASIGNATURA (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8f:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8g:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">imparte</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8h:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">DOCENTE &#x2194; ASIGNATURA</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8i:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">DOCENTE (1,n) &#xB7; ASIGNATURA (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8j:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8k:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">matricula</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8l:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">ALUMNO &#x2194; ASIGNATURA</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8m:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">ALUMNO (0,n) &#xB7; ASIGNATURA (0,n)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8n:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">M:N</span></div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>Le&#xED;das en voz alta:ALUMNO (1,1) &#x2192; todo alumno estudia una carrera, y solo una.CARRERA (1,n) &#x2192; una carrera tiene al menos un alumno y puede tener muchos.ASIGNATURA (1,1) en ofrece &#x2192; cada asignatura pertenece a una sola carrera. Es la restricci&#xF3;n que ped&#xED;a el enunciado.ALUMNO (0,n) en matricula &#x2192; el cero importa: un alumno reci&#xE9;n ingresado todav&#xED;a no se matricul&#xF3; en nada.</p><h3 id="paso-4-los-atributos-de-la-relaci%C3%B3n">Paso 4: los atributos de la relaci&#xF3;n</h3><p>La relaci&#xF3;n matricula lleva tres atributos propios:</p>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8o:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Atributo</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8p:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Por qu&#xE9; vive en la relaci&#xF3;n</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8q:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><div class="notion-inline-code-container" style="display:inline"><span style="font-family:&quot;SFMono-Regular&quot;, Menlo, Consolas, &quot;PT Mono&quot;, &quot;Liberation Mono&quot;, Courier, monospace;line-height:normal;background:rgba(135,131,120,.15);color:#EB5757;border-radius:4px;font-size:85%;padding:0.2em 0.4em;position:relative;bottom:0.065em" data-token-index="0" spellcheck="false" class="notion-enable-hover">nota</span></div></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8r:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">La nota es de un alumno <span style="font-style:italic" data-token-index="1" class="notion-enable-hover">en</span> una asignatura. Ni el alumno &#xAB;tiene una nota&#xBB;, ni la asignatura tampoco.</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8s:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><div class="notion-inline-code-container" style="display:inline"><span style="font-family:&quot;SFMono-Regular&quot;, Menlo, Consolas, &quot;PT Mono&quot;, &quot;Liberation Mono&quot;, Courier, monospace;line-height:normal;background:rgba(135,131,120,.15);color:#EB5757;border-radius:4px;font-size:85%;padding:0.2em 0.4em;position:relative;bottom:0.065em" data-token-index="0" spellcheck="false" class="notion-enable-hover">fec_matricula</span></div></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8t:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">La fecha del acto de matricularse, no del alumno ni del curso.</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8u:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><div class="notion-inline-code-container" style="display:inline"><span style="font-family:&quot;SFMono-Regular&quot;, Menlo, Consolas, &quot;PT Mono&quot;, &quot;Liberation Mono&quot;, Courier, monospace;line-height:normal;background:rgba(135,131,120,.15);color:#EB5757;border-radius:4px;font-size:85%;padding:0.2em 0.4em;position:relative;bottom:0.065em" data-token-index="0" spellcheck="false" class="notion-enable-hover">num_intento</span></div></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8v:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Cu&#xE1;ntas veces ese alumno ha llevado esa asignatura. Solo tiene sentido con ambos presentes.</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>Aqu&#xED; est&#xE1; la ventaja de haber resistido la tentaci&#xF3;n de crear la entidad CALIFICACION: los tres datos caen de forma natural en el mismo sitio.</p><h3 id="paso-5-y-6-los-diagramas">Paso 5 y 6: los diagramas</h3><figure class="kg-card kg-image-card"><img src="https://cesarzavaleta.dev/content/images/2026/08/diagrama-chen-universidad-1.svg" class="kg-image" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos" loading="lazy" width="1100" height="970"></figure><figure class="kg-card kg-image-card"><img src="https://cesarzavaleta.dev/content/images/2026/08/diagrama-martin-universidad.svg" class="kg-image" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos" loading="lazy" width="900" height="780"></figure><h2 id="caso-pr%C3%A1ctico-3-empleados-de-un-departamento-con-generalizaci%C3%B3n">Caso pr&#xE1;ctico 3: empleados de un departamento (con generalizaci&#xF3;n)</h2><h3 id="el-enunciado-2">El enunciado</h3><blockquote>El departamento comercial de una empresa quiere ordenar la informaci&#xF3;n de su personal. El jefe de &#xE1;rea lo describe as&#xED;:De todo empleado se registra su DNI, nombre completo, direcci&#xF3;n, tel&#xE9;fono y sueldo. Cada empleado pertenece a un solo departamento, y un departamento tiene varios empleados a su cargo. Del departamento interesa su c&#xF3;digo, su nombre y su ubicaci&#xF3;n.Los empleados se agrupan en tres perfiles: desarrolladores, vendedores y compradores &#x2014; aunque hay personal que no encaja en ninguno de los tres, como el equipo administrativo. Nadie desempe&#xF1;a dos perfiles a la vez.De los desarrolladores se anota la metodolog&#xED;a con la que trabajan.De los vendedores se anota su comisi&#xF3;n. Cada vendedor atiende a determinados clientes y un mismo cliente puede ser atendido por varios vendedores; interesa saber desde qu&#xE9; fecha se le asign&#xF3; cada cliente. Del cliente se guarda su c&#xF3;digo, nombre y tel&#xE9;fono.De los compradores se anota la informaci&#xF3;n de compra y el presupuesto asignado. Un comprador negocia con varios proveedores, pero cada proveedor tiene asignado un &#xFA;nico comprador como contacto. Del proveedor se guarda su c&#xF3;digo, nombre, direcci&#xF3;n y tel&#xE9;fono.Se pide: dise&#xF1;ar el modelo entidad-relaci&#xF3;n con la metodolog&#xED;a de Chen y con la de Martin.</blockquote><h3 id="paso-1-identificar-entidades-supertipo-y-subtipos">Paso 1: identificar entidades, supertipo y subtipos</h3><p>Entidades regulares: DEPARTAMENTO &#xB7; EMPLEADO &#xB7; CLIENTE &#xB7; PROVEEDORSupertipo: EMPLEADO &#x2192; subtipos: DESARROLLADOR &#xB7; VENDEDOR &#xB7; COMPRADOR</p><blockquote>La clave de este caso est&#xE1; en dos frases del enunciado. Son las que deciden el tipo de jerarqu&#xED;a, y hay que cazarlas al leer:<em>&#xAB;hay personal que no encaja en ninguno de los tres&#xBB;</em> &#x2192; la jerarqu&#xED;a es parcial. En Chen: sin c&#xED;rculo.<em>&#xAB;nadie desempe&#xF1;a dos perfiles a la vez&#xBB;</em> &#x2192; la jerarqu&#xED;a es exclusiva. En Chen: con arco.Resultado: jerarqu&#xED;a exclusiva parcial. Si el enunciado no dijera nada, tendr&#xED;as que preguntarle al cliente: no se puede adivinar.</blockquote><h3 id="paso-2-identificar-los-atributos-2">Paso 2: identificar los atributos</h3><h4 id="del-supertipo-los-heredan-los-tres-subtipos">Del supertipo (los heredan los tres subtipos)</h4>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r4j:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidad</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r4k:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Atributos</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r4l:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">EMPLEADO</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r4m:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">dni_empleado</span>, nom_empleado, dir_empleado, tel_empleado, sue_empleado</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<h4 id="de-cada-subtipo-solo-los-propios">De cada subtipo (solo los propios)</h4>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3f:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Subtipo</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3g:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Atributos</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3h:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">DESARROLLADOR</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3i:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">met_desarrollador (metodolog&#xED;a)</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3j:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">VENDEDOR</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3k:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">com_vendedor (comisi&#xF3;n)</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3l:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">COMPRADOR</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3m:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">inf_comprador (informaci&#xF3;n de compra), pre_comprador (presupuesto)</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>Un vendedor tiene seis atributos: los cinco de EMPLEADO m&#xE1;s su comisi&#xF3;n. Pero solo se dibuja la comisi&#xF3;n, porque los dem&#xE1;s ya est&#xE1;n arriba. La herencia baja, nunca sube: EMPLEADO no tiene comisi&#xF3;n.</p><h4 id="del-resto-de-entidades">Del resto de entidades</h4>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3n:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidad</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3o:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Atributos</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3p:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">DEPARTAMENTO</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3q:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">cod_departamento</span>, nom_departamento, ubi_departamento</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3r:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">CLIENTE</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3s:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">cod_cliente</span>, nom_cliente, tel_cliente</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3t:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">PROVEEDOR</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3u:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">cod_proveedor</span>, nom_proveedor, dir_proveedor, tel_proveedor</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<h3 id="paso-3-identificar-las-relaciones-y-sus-cardinalidades-2">Paso 3: identificar las relaciones y sus cardinalidades</h3>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r3v:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Relaci&#xF3;n</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r40:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidades</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r41:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Cardinalidades</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r42:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Correspondencia</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r43:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">emplea</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r44:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">DEPARTAMENTO &#x2194; EMPLEADO</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r45:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">DEPARTAMENTO (1,n) &#xB7; EMPLEADO (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r46:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r47:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">atiende</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r48:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">VENDEDOR &#x2194; CLIENTE</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r49:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">VENDEDOR (1,n) &#xB7; CLIENTE (1,n)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r4a:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">M:N</span></div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r4b:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">negocia</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r4c:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">COMPRADOR &#x2194; PROVEEDOR</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r4d:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">COMPRADOR (1,n) &#xB7; PROVEEDOR (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r4e:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>F&#xED;jate en un detalle que se pasa por alto: las relaciones salen de los subtipos, no del supertipo. atiende cuelga de VENDEDOR, porque un desarrollador no atiende clientes. Colgarla de EMPLEADO ser&#xED;a un error de modelado: estar&#xED;as afirmando que cualquier empleado puede tener clientes asignados.</p><h3 id="paso-4-los-atributos-de-la-relaci%C3%B3n-1">Paso 4: los atributos de la relaci&#xF3;n</h3>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r4f:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Relaci&#xF3;n</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r4g:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Atributo propio</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r4h:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">atiende</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r4i:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><div class="notion-inline-code-container" style="display:inline"><span style="font-family:&quot;SFMono-Regular&quot;, Menlo, Consolas, &quot;PT Mono&quot;, &quot;Liberation Mono&quot;, Courier, monospace;line-height:normal;background:rgba(135,131,120,.15);color:#EB5757;border-radius:4px;font-size:85%;padding:0.2em 0.4em;position:relative;bottom:0.065em" data-token-index="0" spellcheck="false" class="notion-enable-hover">fec_asignacion</span></div> &#x2014; desde cu&#xE1;ndo ese vendedor atiende a ese cliente</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>Como siempre, la M:N es la que trae atributos: la fecha de asignaci&#xF3;n no es del vendedor ni del cliente, sino del v&#xED;nculo entre los dos.</p><h3 id="paso-5-y-6-los-diagramas-1">Paso 5 y 6: los diagramas</h3><figure class="kg-card kg-image-card"><img src="https://cesarzavaleta.dev/content/images/2026/08/diagrama-chen-empleados.svg" class="kg-image" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos" loading="lazy" width="1300" height="1020"></figure><figure class="kg-card kg-image-card"><img src="https://cesarzavaleta.dev/content/images/2026/08/diagrama-martin-empleados.svg" class="kg-image" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos" loading="lazy" width="960" height="840"></figure><h2 id="caso-pr%C3%A1ctico-4-entidad-bancaria-entidad-d%C3%A9bil-y-relaci%C3%B3n-reflexiva">Caso pr&#xE1;ctico 4: entidad bancaria (entidad d&#xE9;bil y relaci&#xF3;n reflexiva)</h2><h3 id="el-enunciado-3">El enunciado</h3><blockquote>Un banco quiere modelar la informaci&#xF3;n de su red de oficinas. El &#xE1;rea de sistemas describe el negocio as&#xED;:De cada sucursal se registra su c&#xF3;digo, su nombre, su direcci&#xF3;n y la ciudad. La red est&#xE1; organizada de forma jer&#xE1;rquica: algunas sucursales son principales y de ellas dependen otras sucursales, aunque hay oficinas que no dependen de ninguna.De cada cliente se guarda su c&#xF3;digo, nombre completo, DNI y tel&#xE9;fono.Una cuenta se identifica por su n&#xFA;mero, y de ella interesa el saldo, la fecha de apertura y la moneda. Un cliente puede tener varias cuentas y una misma cuenta puede tener varios titulares; de cada titularidad se anota desde qu&#xE9; fecha se registr&#xF3; y de qu&#xE9; tipo es (titular o mancomunado).Cada cuenta est&#xE1; abierta en una sola sucursal, y una sucursal custodia muchas cuentas.De cada transacci&#xF3;n se anota su n&#xFA;mero, la fecha, la cantidad y el tipo de movimiento. El n&#xFA;mero de transacci&#xF3;n se numera desde 1 dentro de cada cuenta, as&#xED; que dos cuentas distintas pueden tener ambas una transacci&#xF3;n n&#xFA;mero 1. Una cuenta reci&#xE9;n abierta puede no tener todav&#xED;a ninguna transacci&#xF3;n.Se pide: dise&#xF1;ar el modelo entidad-relaci&#xF3;n con la metodolog&#xED;a de Chen y con la de Martin.</blockquote><h3 id="paso-1-identificar-las-entidades-2">Paso 1: identificar las entidades</h3><p>SUCURSAL &#xB7; CLIENTE &#xB7; CUENTA &#xB7; TRANSACCION <em>(d&#xE9;bil)</em></p><blockquote>Este caso trae dos conceptos que los anteriores no ten&#xED;an. Ambos salen de frases muy concretas del enunciado, y en los dos hay que estar atento al leer:1. TRANSACCION es una entidad d&#xE9;bil. La pista es <em>&#xAB;se numera desde 1 dentro de cada cuenta&#xBB;</em>. Eso significa que num_transaccion no identifica una transacci&#xF3;n: la transacci&#xF3;n n&#xFA;mero 1 existe muchas veces. Para identificarla hace falta a&#xF1;adir el n&#xFA;mero de cuenta. Es una dependencia de identificaci&#xF3;n, y en Chen el rombo lleva una I en la parte superior.2. depende es una relaci&#xF3;n reflexiva. Una sucursal se relaciona con otras sucursales, es decir, con su propia entidad. Al participar una sola entidad, el grado de la relaci&#xF3;n es 1. Y como las dos ramas salen del mismo sitio, hay que etiquetarlas con su rol (<em>principal</em> y <em>dependiente</em>) o el diagrama es ilegible.</blockquote><h3 id="paso-2-identificar-los-atributos-3">Paso 2: identificar los atributos</h3>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8r:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidad</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8s:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Atributos</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8t:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">SUCURSAL</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8u:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">cod_sucursal</span>, nom_sucursal, dir_sucursal, ciu_sucursal</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8v:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">CLIENTE</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r90:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">cod_cliente</span>, nom_cliente, dni_cliente, tel_cliente</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r91:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">CUENTA</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r92:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">num_cuenta</span>, sal_cuenta (saldo), fec_cuenta (apertura), mon_cuenta (moneda)</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r93:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">TRANSACCION</span> <span style="font-style:italic" data-token-index="2" class="notion-enable-hover">(d&#xE9;bil)</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r94:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-style:italic" data-token-index="0" class="notion-enable-hover">num_transaccion</span> (identificador <span style="font-weight:600" data-token-index="2" class="notion-enable-hover">parcial</span>), fec_transaccion, can_transaccion (cantidad), tip_transaccion (tipo)</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>En el diagrama de Chen num_transaccion va subrayado con l&#xED;nea discontinua, que es la forma habitual de se&#xF1;alar un identificador parcial. Su clave real es num_cuenta + num_transaccion.</p><h3 id="paso-3-identificar-las-relaciones-y-sus-cardinalidades-3">Paso 3: identificar las relaciones y sus cardinalidades</h3>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r7u:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Relaci&#xF3;n</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r7v:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Entidades</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r80:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Cardinalidades</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r81:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Correspondencia</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r82:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Grado</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r83:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">depende</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r84:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">SUCURSAL &#x2194; SUCURSAL</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r85:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">principal (0,n) &#xB7; dependiente (0,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r86:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r87:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">1 (reflexiva)</span></div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r88:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">custodia</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r89:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">SUCURSAL &#x2194; CUENTA</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8a:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">SUCURSAL (1,n) &#xB7; CUENTA (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8b:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8c:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">2</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8d:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">titular</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8e:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">CLIENTE &#x2194; CUENTA</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8f:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">CLIENTE (1,n) &#xB7; CUENTA (1,n)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8g:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">M:N</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8h:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">2</div></div></td></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8i:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">registra</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8j:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">CUENTA &#x2194; TRANSACCION</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8k:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">CUENTA (0,n) &#xB7; TRANSACCION (1,1)</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8l:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">1:N</div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8m:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">2</div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>Dos ceros que salen directamente del enunciado y conviene justificar:dependiente (0,1) &#x2192; <em>&#xAB;hay oficinas que no dependen de ninguna&#xBB;</em>.CUENTA (0,n) en registra &#x2192; <em>&#xAB;una cuenta reci&#xE9;n abierta puede no tener todav&#xED;a ninguna transacci&#xF3;n&#xBB;</em>.</p><h3 id="paso-4-los-atributos-de-la-relaci%C3%B3n-2">Paso 4: los atributos de la relaci&#xF3;n</h3>
<!--kg-card-begin: html-->
<table style="isolation: auto;"><tbody style="isolation: auto;"><tr class="notion-table-row" style="isolation: auto; height: 34px;"><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8n:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Relaci&#xF3;n</div></div></th><th scope="col" dir="ltr" style="background: var(--cd-tabHeaRowColBac); font-weight: 500; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8o:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;">Atributos propios</div></div></th></tr><tr class="notion-table-row" style="isolation: auto; height: 34px;"><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8p:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><span style="font-weight:600" data-token-index="0" class="notion-enable-hover">titular</span></div></div></td><td dir="ltr" style="color: inherit; fill: inherit; border: 1px solid var(--c-borPri); isolation: auto; position: relative; vertical-align: top; text-align: start; min-width: 120px; max-width: 240px; min-height: 32px;"><div class="notion-table-cell" style="isolation: auto;"><div id=":r8q:" class="notion-table-cell-text content-editable-leaf-rtl" spellcheck="true" placeholder=" " contenteditable="false" data-content-editable-leaf="true" style="max-width: 100%; width: 100%; white-space: break-spaces; word-break: break-word; caret-color: var(--c-texPri); padding: 7px 9px; background-color: transparent; font-size: 14px; line-height: 20px;"><div class="notion-inline-code-container" style="display:inline"><span style="font-family:&quot;SFMono-Regular&quot;, Menlo, Consolas, &quot;PT Mono&quot;, &quot;Liberation Mono&quot;, Courier, monospace;line-height:normal;background:rgba(135,131,120,.15);color:#EB5757;border-radius:4px;font-size:85%;padding:0.2em 0.4em;position:relative;bottom:0.065em" data-token-index="0" spellcheck="false" class="notion-enable-hover">fec_titularidad</span></div>, <div class="notion-inline-code-container" style="display:inline"><span style="font-family:&quot;SFMono-Regular&quot;, Menlo, Consolas, &quot;PT Mono&quot;, &quot;Liberation Mono&quot;, Courier, monospace;line-height:normal;background:rgba(135,131,120,.15);color:#EB5757;border-radius:4px;font-size:85%;padding:0.2em 0.4em;position:relative;bottom:0.065em" data-token-index="2" spellcheck="false" class="notion-enable-hover">tip_titularidad</span></div></div></div></td></tr></tbody></table>
<!--kg-card-end: html-->
<p>El tipo de titularidad no es del cliente (puede ser titular de una cuenta y mancomunado de otra) ni de la cuenta (cada uno de sus titulares tiene un rol distinto). Es del v&#xED;nculo.</p><h3 id="paso-5-y-6-los-diagramas-2">Paso 5 y 6: los diagramas</h3><figure class="kg-card kg-image-card"><img src="https://cesarzavaleta.dev/content/images/2026/08/diagrama-chen-banco.svg" class="kg-image" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos" loading="lazy" width="1300" height="1000"></figure><figure class="kg-card kg-image-card"><img src="https://cesarzavaleta.dev/content/images/2026/08/diagrama-martin-banco.svg" class="kg-image" alt="Modelo entidad-relaci&#xF3;n (MER): gu&#xED;a completa con ejemplos" loading="lazy" width="960" height="880"></figure>]]></content:encoded></item><item><title><![CDATA[Maven para Ingenieros]]></title><description><![CDATA[Descubre qué es Maven, cómo funciona en proyectos Java y por qué sigue siendo clave para gestionar dependencias, automatizar builds y trabajar en equipo con mayor orden.]]></description><link>https://cesarzavaleta.dev/maven-para-ingenieros/</link><guid isPermaLink="false">69e52a2af8edf9170672d5b7</guid><dc:creator><![CDATA[Cesar Eduardo Zavaleta Leon]]></dc:creator><pubDate>Sun, 19 Apr 2026 20:54:29 GMT</pubDate><content:encoded><![CDATA[<p>Desarrollar software sin una herramienta de automatizaci&#xF3;n puede parecerse mucho a construir una casa buscando cada material por separado. Un d&#xED;a consigues los ladrillos, al siguiente las ventanas, despu&#xE9;s los clavos, y aun as&#xED; nada garantiza que todas las piezas encajen. Durante mucho tiempo, as&#xED; se sinti&#xF3; trabajar con proyectos Java: dependencias descargadas a mano, configuraciones fr&#xE1;giles y entornos que funcionaban en una m&#xE1;quina, pero fallaban en otra.</p><p>En ese contexto apareci&#xF3; Maven, una herramienta que no solo simplific&#xF3; la gesti&#xF3;n de bibliotecas, sino que introdujo algo todav&#xED;a m&#xE1;s valioso: orden. Con Maven, los proyectos dejaron de depender de improvisaciones y empezaron a construirse bajo una l&#xF3;gica predecible, repetible y mucho m&#xE1;s profesional.</p><h2 id="%C2%BFqu%C3%A9-es-maven-y-por-qu%C3%A9-es-tan-importante-en-java"><strong>&#xBF;Qu&#xE9; es Maven y por qu&#xE9; es tan importante en Java?</strong></h2><p>Maven es una herramienta de automatizaci&#xF3;n y gesti&#xF3;n de proyectos ampliamente usada en el ecosistema Java. Su funci&#xF3;n va mucho m&#xE1;s all&#xE1; de descargar librer&#xED;as: organiza el proyecto, define c&#xF3;mo debe construirse, automatiza tareas repetitivas y facilita el trabajo colaborativo.</p><p>Su gran valor est&#xE1; en que reduce la fricci&#xF3;n t&#xE9;cnica. En lugar de invertir tiempo buscando archivos, corrigiendo rutas o resolviendo configuraciones manuales, el desarrollador puede concentrarse en escribir c&#xF3;digo y mejorar la aplicaci&#xF3;n.</p><p>En proyectos peque&#xF1;os esto ya representa una ventaja. En aplicaciones empresariales, donde intervienen frameworks, controladores de base de datos, plugins, pruebas y despliegues, la diferencia es enorme.</p><h2 id="el-problema-que-maven-vino-a-resolver"><strong>El problema que Maven vino a resolver</strong></h2><p>Antes de Maven, gestionar dependencias en Java era una tarea manual y propensa a errores. Los desarrolladores deb&#xED;an descargar archivos JAR desde distintos sitios, copiarlos en carpetas como <code>lib/</code>, agregarlos al classpath y comprobar que todas las versiones fueran compatibles entre s&#xED;.</p><p>El problema se complicaba cuando una librer&#xED;a depend&#xED;a de otras. Entonces hab&#xED;a que rastrear no solo la dependencia principal, sino tambi&#xE9;n sus componentes secundarios. Ese proceso consum&#xED;a tiempo, generaba inconsistencias y volv&#xED;a dif&#xED;cil compartir el proyecto con otros integrantes del equipo.</p><p>El resultado era un entorno fr&#xE1;gil. Bastaba con que faltara un archivo o cambiara una versi&#xF3;n para que el sistema dejara de compilar correctamente. Maven naci&#xF3; para eliminar esa fragilidad y convertir la construcci&#xF3;n del software en un flujo confiable.</p><h2 id="el-coraz%C3%B3n-de-maven-el-archivo-pomxml"><strong>El coraz&#xF3;n de Maven: el archivo pom.xml</strong></h2><p>Uno de los elementos m&#xE1;s importantes de Maven es el archivo <code>pom.xml</code>. Este archivo funciona como el plano maestro del proyecto. All&#xED; se define qu&#xE9; necesita la aplicaci&#xF3;n, c&#xF3;mo debe compilarse, qu&#xE9; dependencias utiliza, qu&#xE9; plugins intervienen y cu&#xE1;l es la identidad del proyecto.</p><p>Dentro del POM aparecen datos esenciales como:</p><h3 id="groupid"><strong>GroupId</strong></h3><p>Identifica a la organizaci&#xF3;n o grupo responsable del artefacto.</p><h3 id="artifactid"><strong>ArtifactId</strong></h3><p>Representa el nombre del proyecto o componente.</p><h3 id="version"><strong>Version</strong></h3><p>Indica la versi&#xF3;n concreta que se usar&#xE1; o publicar&#xE1;.</p><p>Gracias a esta estructura, Maven puede localizar exactamente cada dependencia y construir el proyecto con base en reglas claras. El POM no es solo un archivo de configuraci&#xF3;n: es el punto de control de todo el build.</p><h2 id="c%C3%B3mo-maven-gestiona-las-dependencias"><strong>C&#xF3;mo Maven gestiona las dependencias</strong></h2><p>Cuando una dependencia se declara en el <code>pom.xml</code>, Maven se encarga de buscarla, descargarla y a&#xF1;adirla al proyecto. El desarrollador ya no tiene que perseguir archivos manualmente. Basta con declarar qu&#xE9; necesita y Maven resuelve el resto.</p><p>Aqu&#xED; entra una de sus funciones m&#xE1;s poderosas: las dependencias transitivas. Esto significa que, si una biblioteca necesita otras bibliotecas para funcionar, Maven tambi&#xE9;n las incorpora autom&#xE1;ticamente. Esa capacidad ahorra mucho trabajo y reduce errores humanos.</p><p>Por eso Maven no solo simplifica la incorporaci&#xF3;n de componentes externos; tambi&#xE9;n mejora la estabilidad del proyecto. El entorno queda definido de forma expl&#xED;cita y reproducible.</p><h2 id="maven-central-y-el-repositorio-local"><strong>Maven Central y el repositorio local</strong></h2><p>Para lograrlo, Maven trabaja con repositorios. El m&#xE1;s conocido es Maven Central, donde se alojan miles de bibliotecas listas para ser usadas en proyectos Java.</p><p>Pero Maven tambi&#xE9;n mantiene un repositorio local en la m&#xE1;quina del desarrollador. All&#xED; guarda las dependencias descargadas para reutilizarlas despu&#xE9;s sin necesidad de volver a bajarlas desde internet.</p><p>Esto aporta tres ventajas claras:</p><ul><li>acelera el trabajo diario,</li><li>reduce descargas innecesarias,</li><li>y permite reutilizar componentes entre varios proyectos.</li></ul><p>En la pr&#xE1;ctica, Maven act&#xFA;a como un sistema inteligente que recuerda qu&#xE9; ya existe en tu entorno y solo busca afuera cuando realmente lo necesita.</p><h2 id="convenci%C3%B3n-sobre-configuraci%C3%B3n-el-orden-como-ventaja-competitiva"><strong>Convenci&#xF3;n sobre configuraci&#xF3;n: el orden como ventaja competitiva</strong></h2><p>Uno de los aportes m&#xE1;s inflavalorados de Maven es su apuesta por la convenci&#xF3;n sobre configuraci&#xF3;n. En lugar de dejar que cada proyecto se organice de manera distinta, Maven propone una estructura est&#xE1;ndar que hace todo m&#xE1;s claro.</p><p>Un proyecto Maven suele organizarse as&#xED;:</p><h3 id="srcmainjava"><strong>src/main/java</strong></h3><p>Aqu&#xED; vive el c&#xF3;digo fuente principal.</p><h3 id="srcmainresources"><strong>src/main/resources</strong></h3><p>Aqu&#xED; se ubican configuraciones, propiedades y otros recursos de la aplicaci&#xF3;n.</p><h3 id="srctestjava"><strong>src/test/java</strong></h3><p>Aqu&#xED; se colocan las pruebas.</p><h3 id="target"><strong>target</strong></h3><p>Aqu&#xED; Maven genera los archivos compilados y empaquetados.</p><p>Esta uniformidad parece simple, pero transforma la experiencia de desarrollo. Cualquier persona que abra el proyecto sabe d&#xF3;nde encontrar el c&#xF3;digo, los tests y los recursos. Las herramientas tambi&#xE9;n entienden mejor la estructura. Eso reduce fricci&#xF3;n, acelera la incorporaci&#xF3;n de nuevos miembros y mejora la mantenibilidad.</p><h2 id="el-ciclo-de-vida-de-maven-explicado-de-forma-simple"><strong>El ciclo de vida de Maven explicado de forma simple</strong></h2><p>Maven no funciona como una colecci&#xF3;n de comandos aislados. Opera a trav&#xE9;s de un ciclo de vida compuesto por fases que siguen una secuencia l&#xF3;gica. Cada etapa prepara el camino para la siguiente.</p><h2 id="fases-clave-del-trabajo-con-maven"><strong>Fases clave del trabajo con Maven</strong></h2><h3 id="mvn-clean"><strong>mvn clean</strong></h3><p>Limpia el proyecto y elimina restos de compilaciones anteriores. Es el equivalente a empezar desde una mesa de trabajo despejada.</p><h3 id="mvn-validate"><strong>mvn validate</strong></h3><p>Comprueba que la configuraci&#xF3;n del proyecto sea correcta antes de avanzar.</p><h3 id="mvn-compile"><strong>mvn compile</strong></h3><p>Compila el c&#xF3;digo fuente y genera los archivos necesarios para convertirlo en una aplicaci&#xF3;n funcional.</p><h3 id="mvn-test"><strong>mvn test</strong></h3><p>Ejecuta las pruebas unitarias para verificar que el comportamiento esperado se mantenga.</p><h3 id="mvn-package"><strong>mvn package</strong></h3><p>Empaqueta el proyecto en un artefacto distribuible, normalmente un JAR o un WAR.</p><h3 id="mvn-verify"><strong>mvn verify</strong></h3><p>Realiza comprobaciones adicionales para asegurar que el build cumple con los criterios definidos.</p><h3 id="mvn-install"><strong>mvn install</strong></h3><p>Instala el artefacto en el repositorio local para que otros proyectos de la misma m&#xE1;quina puedan reutilizarlo.</p><h3 id="mvn-deploy"><strong>mvn deploy</strong></h3><p>Publica el artefacto en un repositorio remoto, &#xFA;til para equipos o entornos empresariales.</p><h3 id="mvn-site"><strong>mvn site</strong></h3><p>Genera documentaci&#xF3;n del proyecto en formato web.</p><p>Lo interesante es que Maven entiende esta secuencia como una cadena. Cuando ejecutas una fase avanzada, Maven ejecuta autom&#xE1;ticamente las anteriores que sean necesarias. As&#xED; evita pasos olvidados y mantiene coherencia en el proceso.</p><h2 id="por-qu%C3%A9-maven-mejora-el-trabajo-en-equipo"><strong>Por qu&#xE9; Maven mejora el trabajo en equipo</strong></h2><p>Cuando un proyecto crece y deja de estar en manos de una sola persona, Maven se vuelve todav&#xED;a m&#xE1;s valioso. En un entorno colaborativo, no basta con compartir el c&#xF3;digo: tambi&#xE9;n hay que compartir la forma en que ese c&#xF3;digo se construye.</p><p>Con Maven, toda esa informaci&#xF3;n queda declarada en el <code>pom.xml</code>. Eso significa que cualquier desarrollador puede clonar el proyecto y reconstruir el entorno sin recibir instrucciones manuales interminables.</p><p>Este enfoque aporta beneficios muy concretos:</p><ul><li>menos errores de configuraci&#xF3;n,</li><li>mayor portabilidad del proyecto,</li><li>builds m&#xE1;s consistentes,</li><li>y una colaboraci&#xF3;n mucho m&#xE1;s fluida.</li></ul><p>En lugar de perder tiempo resolviendo diferencias entre m&#xE1;quinas, los equipos pueden enfocarse en desarrollar.</p><h2 id="maven-como-herramienta-de-productividad"><strong>Maven como herramienta de productividad</strong></h2><p>Pensar en Maven solo como un gestor de dependencias es quedarse corto. Tambi&#xE9;n es una herramienta de productividad. Automatiza tareas que, hechas a mano, ser&#xED;an repetitivas y arriesgadas.</p><p>Compilar, probar, empaquetar, instalar, desplegar y documentar dejan de ser acciones dispersas para convertirse en una rutina ordenada. Esto no solo mejora la velocidad del equipo, sino tambi&#xE9;n la calidad del proceso.</p><p>En desarrollo profesional, la productividad no depende &#xFA;nicamente de escribir c&#xF3;digo r&#xE1;pido. Depende de reducir errores, estandarizar flujos y evitar retrabajo. Ah&#xED; es donde Maven sigue marcando la diferencia.</p><h2 id="buenas-pr%C3%A1cticas-para-usar-maven-mejor"><strong>Buenas pr&#xE1;cticas para usar Maven mejor</strong></h2><p>Aunque Maven simplifica mucho el trabajo, su verdadero potencial aparece cuando se usa con criterio. Algunas pr&#xE1;cticas recomendables son:</p><h3 id="definir-versiones-de-forma-clara"><strong>Definir versiones de forma clara</strong></h3><p>Evita depender de configuraciones ambiguas o desordenadas. Tener control sobre versiones mejora la estabilidad.</p><h3 id="mantener-limpio-el-pom"><strong>Mantener limpio el POM</strong></h3><p>Un <code>pom.xml</code> bien organizado facilita el mantenimiento y la comprensi&#xF3;n del proyecto.</p><h3 id="aprovechar-dependencymanagement-en-proyectos-grandes"><strong>Aprovechar dependencyManagement en proyectos grandes</strong></h3><p>Cuando hay varios m&#xF3;dulos o m&#xFA;ltiples dependencias relacionadas, esta secci&#xF3;n ayuda a centralizar versiones.</p><h3 id="no-versionar-la-carpeta-target"><strong>No versionar la carpeta target</strong></h3><p>Los artefactos generados no deber&#xED;an vivir en el repositorio de c&#xF3;digo fuente.</p><h3 id="usar-maven-como-parte-del-flujo-de-integraci%C3%B3n"><strong>Usar Maven como parte del flujo de integraci&#xF3;n</strong></h3><p>Su estructura encaja muy bien con pruebas autom&#xE1;ticas y pipelines de integraci&#xF3;n continua.</p><h2 id="una-analog%C3%ADa-sencilla-para-entender-maven"><strong>Una analog&#xED;a sencilla para entender Maven</strong></h2><p>Imagina que vas a preparar una receta compleja. Primero revisas ingredientes, luego mezclas, despu&#xE9;s pruebas, horneas, guardas el resultado y finalmente lo compartes. Maven funciona de forma muy parecida.</p><p>Valida que todo est&#xE9; correcto, compila, prueba, empaqueta, instala y despliega. Cada paso tiene un orden l&#xF3;gico. No se puede publicar algo que todav&#xED;a no ha sido construido correctamente, del mismo modo que no se puede servir un pastel que a&#xFA;n no ha salido del horno.</p><p>Esa l&#xF3;gica secuencial es una de las razones por las que Maven ha sido tan importante en el desarrollo Java: convierte una suma de tareas t&#xE9;cnicas en un proceso comprensible y repetible.</p><h2 id="conclusi%C3%B3n"><strong>Conclusi&#xF3;n</strong></h2><p>Maven cambi&#xF3; la forma de construir software en Java porque resolvi&#xF3; un problema profundo: el desorden. Donde antes hab&#xED;a configuraciones manuales, dependencias dispersas y procesos fr&#xE1;giles, Maven introdujo estructura, automatizaci&#xF3;n y consistencia.</p><p>Su valor no est&#xE1; solo en descargar bibliotecas. Est&#xE1; en establecer una forma profesional de trabajar. Un proyecto con Maven es m&#xE1;s f&#xE1;cil de entender, compartir, mantener y escalar. Y en equipos que construyen aplicaciones reales, esa diferencia se siente todos los d&#xED;as.</p><p>Por eso, incluso con la aparici&#xF3;n de nuevas herramientas y enfoques, Maven sigue siendo una pieza clave para miles de desarrolladores e ingenieros que necesitan construir software Java con menos caos y m&#xE1;s control.</p>]]></content:encoded></item></channel></rss>