<?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, 10 Aug 2026 07:03:31 GMT</lastBuildDate><atom:link href="https://cesarzavaleta.dev/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><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><content:encoded><![CDATA[<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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 loading="lazy" width="960" height="880"></figure>]]></content:encoded></item></channel></rss>