{ "cells": [ { "cell_type": "markdown", "id": "interesting-plane", "metadata": { "tags": [] }, "source": [ "
\n", " \n", "
\n", "\n", "# Aprendizaje Profundo" ] }, { "cell_type": "markdown", "id": "funky-sound", "metadata": {}, "source": [ "#
Modelo Entidad-Relación
" ] }, { "cell_type": "markdown", "id": "shared-bangkok", "metadata": {}, "source": [ "## Profesores" ] }, { "cell_type": "markdown", "id": "serial-swedish", "metadata": {}, "source": [ "1. Alvaro Mauricio Montenegro Díaz, ammontenegrod@unal.edu.co\n", "2. Daniel Mauricio Montenegro Reyes, dextronomo@gmail.com \n", "3. Campo Elías Pardo Turriago, cepardot@unal.edu.co " ] }, { "cell_type": "markdown", "id": "stunning-confirmation", "metadata": {}, "source": [ "## Asesora Medios y Marketing digital\n", " " ] }, { "cell_type": "markdown", "id": "increased-fiber", "metadata": {}, "source": [ "4. Maria del Pilar Montenegro, pmontenegro88@gmail.com " ] }, { "cell_type": "markdown", "id": "dynamic-commissioner", "metadata": {}, "source": [ "## Asistentes" ] }, { "cell_type": "markdown", "id": "pediatric-element", "metadata": {}, "source": [ "5. Oleg Jarma, ojarmam@unal.edu.co \n", "6. Laura Lizarazo, ljlizarazore@unal.edu.co " ] }, { "cell_type": "markdown", "id": "lovely-kingston", "metadata": {}, "source": [ "## Contenido" ] }, { "cell_type": "markdown", "id": "potential-stewart", "metadata": {}, "source": [ "* [Introducción](#Introducción)\n", "* [Entidades e instancias](#Entidades-e-instancias)\n", "* [Relaciones y conjuntos de relaciones](#Relaciones-y-conjuntos-de-relaciones)\n", "* [Atributos](#Atributos)" ] }, { "cell_type": "markdown", "id": "fifty-female", "metadata": {}, "source": [ "## Introducción" ] }, { "cell_type": "markdown", "id": "collected-saskatchewan", "metadata": {}, "source": [ "El Modelaje entidad-relación es una técnica para definir necesidades de información en la organización. \n", "\n", "Este proporciona un firme fundamento para desarrollo de sistemas de información de alta calidad. \n", "\n", "En términos sencillos, el modelaje entidad-relación involucra la identificación de cosas importantes en la organización (**entidades**), las propiedades de estas cosas (**atributos**) y como estas cosas están relacionadas entre sí (**relaciones**). \n", "\n", "Un modelo de este tipo se construye con base en un conjunto de técnicas gráficas, que pretenden describir en términos de datos los requerimientos de una organización, siendo el soporte para brindar información de tipo operativo, táctico y gerencial a las personas que la necesitan. \n", "\n", "La notación usada en este documento fue introducida por ORACLE y se ha convertido en un estándar para el diseño de bases de datos relacionales.\n" ] }, { "cell_type": "markdown", "id": "portable-medication", "metadata": {}, "source": [ "## Entidades e instancias" ] }, { "cell_type": "markdown", "id": "infectious-bloom", "metadata": {}, "source": [ "El propósito de una base de datos que forma parte de un sistema de información es almacenar información acerca de ciertos tipos de objetos. En el lenguaje de las bases de datos estos objetos son llamados **instancias**. \n", "\n", "\n", "Así, una entidad es una cosa u objeto de significancia, ya sea real o imaginaria, acerca de la cual se necesita tener información. El ejemplo de inicio, contiene entidades como ciudades, departamentos, instituciones. \n", "\n", "Es importante hacer la diferencia entre las entidades que están contenidas en una base de datos en un momento dado(**instancias**) y el mundo de todas las posibles entidades que la base puede contener. \n", "\n", "La importancia radica en que el contenido de la base de datos cambia continuamente, y las decisiones no pueden tomarse sobre la información actual, sino que se debe pensar sobre el contenido de la base de datos en el futuro. \n", "Por ejemplo la base datos del ejemplo puede 2450 entidades de tipo ciudad. Sin embargo en el futuro se puede tener algunas otras mas y pueden eliminarse otras. \n", "\n", "Una **entidad** es el conjunto de todas las posibles instancias que una base de datos puede contener. \n", "\n", "En el ejemplo, el conjunto de todas las posibles ciudades es la clase entidad CIUDAD. \n", "\n", "En la implementación se suguiere agregar el prefijo tbl como una convención de nombrado de objetos. Otras clases entidad del ejemplo son: Departamento, Institución, Editorial, Idioma, etc.\n" ] }, { "cell_type": "markdown", "id": "restricted-mills", "metadata": {}, "source": [ "### Representación gráfica de entidades" ] }, { "cell_type": "markdown", "id": "opened-marine", "metadata": {}, "source": [ "Una entidad se representa gráficamente mediante una caja de tipo Softbox (Un rectángulo con las esquinas redondeadas), rotulada con el nombre de la clase entidad correspondiente.\n", "\n", "El nombre de la entidad se escribe en singular y en mayúsculas en el centro de la parte superior de la caja. \n", "\n", "El tamaño de la caja no tiene un estándar definido, sin embargo debe ser el suficiente de tal manera que permita la localización de un nombre no ambiguo (en lo posible sin abreviaciones). Esta representación esquemática es individual para cada una de las clases de entidades y debe ser lo suficientemente entendible, de tal manera que permita una interpretación clara de la entidad dentro del conjunto del modelo representado en un diagrama entidad-relación.\n", "\n", "El nombre para una entidad debe ser una representación de un tipo o clase de cosa, no de una instancia (ocurrencia) o entidad particular. La siguientes figuras muestran la forma correcta de representar una entidad y una una forma incorrecta respectivamente." ] }, { "cell_type": "markdown", "id": "romantic-information", "metadata": {}, "source": [ "\n", "![SGBD](../Imagenes/entidad_correcta.jpeg)\n", "\n", "Figura 3. Entidades correctas" ] }, { "cell_type": "markdown", "id": "lonely-miami", "metadata": {}, "source": [ "![SGBD](../Imagenes/No_es_entidad.jpeg)\n", "\n", "Figura 4. No son entidades" ] }, { "cell_type": "markdown", "id": "dutch-construction", "metadata": {}, "source": [ "### Características generales de las entidades y de las clases de entidades" ] }, { "cell_type": "markdown", "id": "together-reform", "metadata": {}, "source": [ "- Cualquier tipo de cosa u objeto puede solamente ser representado por una clase entidad, es decir las clases de entidades son mutuamente exclusivas en todos los casos.\n", "- Cada entidad debe ser identificable de manera única, es decir que cada instancia (ocurrencia) de la clase entidad deber ser separada y distinta de todas las otras instancias de la entidad.\n", "- Además de la representación en detalle de los requerimientos de información cada para cada clase entidad se requiere disponer de : \n", " + Nombre\n", " + Sinónimos (Otras forma o manera de denominación)\n", " + Volúmenes estimados\n", " + Descripción\n", " + Notas, Comentarios y las Observaciones \n", "- Cada clase entidad tiene asociados\n", " + Atributos (Al menos dos)\n", " + Relaciones (Al menos una)\n", " + identificador único (Al menos uno)\n", " + Funciones del negocio involucradas con la Entidad (Al menos una)" ] }, { "cell_type": "markdown", "id": "massive-module", "metadata": {}, "source": [ "### Taxonomía de las entidades" ] }, { "cell_type": "markdown", "id": "armed-career", "metadata": {}, "source": [ "\n", "Las clases de entidades más típicas pueden clasificarse en\n", "\n", "- **Sujetos.** Personas y organizaciones que originan transacciones registradas en el sistema. Ejemplos:: Cliente, Proveedor, Empleado, Tercero, Estudiante, Dependencia.\n", "- **Objetos.** Entes tangibles, cuentas para los cuales se mantienen saldos afectados por las transacciones. Ejemplos: Artículo, Cuenta Contable.\n", "- **Eventos.** Transacciones (originadas por sujetos y que afectan objetos) generalmente registradas en documentos. Ejemplos: Novedades, Ajustes, Consignaciones.\n", "- **Lugares.** Ubicación de sujetos y objetos. Ejemplos: ciudad, región, edificio.\n", "- **Abstracciones.** Conceptos empleados para clasificar o medir otras entidades. Ejemplos: Tipo de Novedad, Unidad de Medida, Nivel de Cargo.\n", "\n", "Las abstracciones son un tipo particularmente importante de entidad, ya que dan origen a clasificaciones de las entidades.\n" ] }, { "cell_type": "markdown", "id": "noble-endorsement", "metadata": {}, "source": [ "## Relaciones y conjuntos de relaciones" ] }, { "cell_type": "markdown", "id": "harmful-holly", "metadata": {}, "source": [ "Una relación binaria es una asociación entre dos entidades, que representa un vinculo de información entre dos fuentes dentro de la organización. \n", "\n", "En la teoría general de bases de datos las relaciones pueden ser n-arias, en el modelo entidad–relación. \n", "\n", "En lo que sigue siempre se consideran relaciones binarias. Más tarde veremos la forma de representar relaciones n-arias. \n", "\n", "Una relación es **binaria** en el sentido de que siempre es una asociación exactamente entre dos instancias de distinto tipo, o entre dos instancias del mismo tipo.\n", "\n", "Por ejemplo, entre las entidades Medellín (de la entidad CIUDAD) y Antioquia (de la entidad DEPARTAMENTO) existe la relación binaria descrita por “Medellín está ubicada en Antioquia”. \n", "\n", "Nótese que varias entidades de tipo Ciudad están relacionadas con la entidad Antioquia exactamente en el mismo sentido.\n", "\n", "Esta relación se representa en forma abstracta como se indica a continuación" ] }, { "cell_type": "markdown", "id": "spread-habitat", "metadata": {}, "source": [ "![SGBD](../Imagenes/relacion_binaria.jpeg)\n", "\n", "Figura 5. Representación de una relación binaria entre instancias de entidades CIUDAD- DEPARTAMENTO." ] }, { "cell_type": "markdown", "id": "loaded-yeast", "metadata": {}, "source": [ "![SGBD](../Imagenes/Relación_recursiva.jpeg)\n", "\n", "Figura 6. Representación de una relación binaria entre instancias de la entidad INSTITUCION.\n", "\n", "¿Pueden imaginar un ejemplo de este tipo de relación?" ] }, { "cell_type": "markdown", "id": "fossil-omega", "metadata": {}, "source": [ "### Formalismo matemático" ] }, { "cell_type": "markdown", "id": "residential-dimension", "metadata": {}, "source": [ "Un conjunto de relaciones es un conjunto de relaciones del mismo tipo.\n", "\n", "Formalmente un conjunto de relaciones es una relación matemática de conjuntos de instancias, no necesariamente de diferente tipo. Si $E_1, E_2, ...E_n$, son conjuntos de instancias, entonces un conjunto de relaciones $R$ es un subconjunto del producto cartesiano\n", "\n", "$$\n", "E_1 \\times\\ldots E_n =\\{ (e_1,\\ldots,e_n): e_1\\in E_1,\\ldots, e_n\\in E_n \\}\n", "$$" ] }, { "cell_type": "markdown", "id": "active-triple", "metadata": {}, "source": [ "### Representación gráfica de relaciones entre entidades" ] }, { "cell_type": "markdown", "id": "parliamentary-bouquet", "metadata": {}, "source": [ "\n", "Las relaciones entre entidades se representan como líneas que conectan las cajas que representan a las entidades participantes en la asociación. \n", "\n", "Dentro de la representación se distinguen básicamente dos extremos, en razón del vinculo binario. \n", "\n", "Cada extremo se conecta a la caja de la entidad correspondiente. La Figura próxima presenta un ejemplo de representación de un relación binaria entre dos entidades de distinta clase.\n", "\n", "Como se explica un poco mas adelante, el gráfico representa una relación en donde una instancia de la entidad $A$ se relaciona con a lo mas una instancia de la entidad $B$ y a su vez una instancias de la entidad $B$ puede estar relacionada con muchas instancias de de la entidad $A$.\n", "\n" ] }, { "cell_type": "markdown", "id": "roman-villa", "metadata": {}, "source": [ "![SGBD](../Imagenes/Grafica_relacion_binaria.jpeg)\n", "\n", "Figura 7. Representación gráfica de una relación binaria entre entidades de distinto tipo" ] }, { "cell_type": "markdown", "id": "stunning-welding", "metadata": {}, "source": [ "### Tipos de relaciones. Cardinalidad de asignación en las relaciones" ] }, { "cell_type": "markdown", "id": "elegant-trash", "metadata": {}, "source": [ "La cardinalidad de asignación en la relaciones expresa el número de entidades con las que puede asociarse (vincularse o relacionarse) otra entidad en un conjunto de entidades. La cardinalidad o grado de asignación puede ser:\n", "\n", "\n", "1. **Una a una**. El tipo de relación es uno a uno (1:1).\n", "2.**Una a muchas**. El tipo de relación es uno a muchos (1:N)\n", "3. **Muchas a muchas**. El tipo de relación es muchos a muchos (N:M)." ] }, { "cell_type": "markdown", "id": "alert-crest", "metadata": {}, "source": [ "#### Relaciones uno a uno (1:1)" ] }, { "cell_type": "markdown", "id": "returning-blogger", "metadata": {}, "source": [ "Una instancia de la entidad $A$ se relaciona a lo mas con una y sólo una instancia de la clase entidad $B$ y viceversa, es decir, una instancia de la entidad $B$ se relaciona a lo mas con una y sólo una instancia de la entidad $B$. " ] }, { "cell_type": "markdown", "id": "handmade-reaction", "metadata": {}, "source": [ "\n", "![SGBD](../Imagenes/Relacion_uno_uno.jpeg)\n", "\n", "Figura 8. Representación gráfica de una relación binaria de tipo 1:1." ] }, { "cell_type": "markdown", "id": "steady-closer", "metadata": {}, "source": [ "Esta es una forma de relación poco común, debido a que por lo general se trata de una separación de los atributos de una misma entidad. \n", "\n", "Un ejemplo típico de una relación de tipo 1 a 1 es considerar la entidad PERSONA y la entidad PLANTA. de una institución oficial. \n", "\n", "Cada cargo en la planta es ocupado por una y solo una persona. \n", "\n", "Por facilidad de manipulación de la base datos pueden ser mas conveniente mantener separadas las instancias de la entidad PLANTA de las instancias de la entidad PERSONA." ] }, { "cell_type": "markdown", "id": "sudden-whole", "metadata": {}, "source": [ "\n", "![SGBD](../Imagenes/planta_perosna_1_1.jpeg)\n", "\n", "Figura 9. Representación gráfica de una relación Planta-Persona" ] }, { "cell_type": "markdown", "id": "italian-peninsula", "metadata": {}, "source": [ "#### Relaciones uno a muchos (1:N)" ] }, { "cell_type": "markdown", "id": "cross-catalog", "metadata": {}, "source": [ "Una instancia en la entidad $A$ se relaciona a los más una instancia de de la entidad $B$. Una instancia en la entidad $B$ puede estar asociada con un número cualquiera de instancias de la entidad $A$. " ] }, { "cell_type": "markdown", "id": "fifth-greensboro", "metadata": {}, "source": [ "![SGBD](../Imagenes/Representacion_1_N.jpeg)\n", "\n", "Figura 10. Representación gráfica de una relación 1:N entre instancias\n" ] }, { "cell_type": "markdown", "id": "racial-cholesterol", "metadata": {}, "source": [ "\n", "\n", "Algunos autores diferencian relaciones una a muchas de relaciones muchas a una. En este caso la figura corresponde a una relación muchas a una. Teóricamente, no existe diferencia y en este documento se usará únicamente la nomenclatura una a muchas.\n", "\n", "La Figura 11 es la representación abstracta en un modelo entidad-relación de un relación una a muchas entre instancias de la entidad $B$ (extremo uno de la relación) e instancias de la entidad $A$ (extremo muchos de la relación)." ] }, { "cell_type": "markdown", "id": "editorial-export", "metadata": {}, "source": [ "\n", "![SGBD](../Imagenes/uno_muchos_entidad.jpeg)\n", "\n", "Figura 11. Representación gráfica de una relación 1:N\n", "\n", "El siguiente es un ejemplo real de este tipo de relaciones" ] }, { "cell_type": "markdown", "id": "extreme-regulation", "metadata": {}, "source": [ "\n", "\n", "![SGBD](../Imagenes/rel_ciudad_depto.jpeg)\n", "\n", "Figura 12. Ejemplo de una relación Ciudad-Departamento\n", "\n", "Los letreros (roles) sugieren la forma de leer las relaciones. Por ejemplo la relación entre la instancia “Medellín” de la entidad CIUDAD y la instancia “Antioquia” de la entidad DEPARTAMENTO, se puede leer como\n", "\n", "*Medellín está ubicada en Antioquia”, o, “Antioquia es el departamento de Medellín*" ] }, { "cell_type": "markdown", "id": "challenging-camera", "metadata": {}, "source": [ "#### Convenio de notación" ] }, { "cell_type": "markdown", "id": "elementary-recall", "metadata": {}, "source": [ "Este convenio no es de uso obligatorio, pero se sugiere para facilitar la lectura de los diagramas E/R.\n", "\n", "\n", "Para estandarizar la construcción del diagrama entidad–relación asociado al modelo entidad–relación se acuerda que en la representación de relaciones siempre se ubiquen las entidades de tal manera que el lado 1 quede colocado debajo o a la derecha y el lado N encima o a la izquierda. \n", "\n", "Adicionalmente se debe evitar hasta donde sea posible interceptar las líneas de relación. La figura ilustra este convenio de notación. La figura muestra formas incorrectas de notación de acuerdo a esta convención.\n" ] }, { "cell_type": "markdown", "id": "restricted-christian", "metadata": {}, "source": [ "\n", "![SGBD](../Imagenes/convenio_notacion.jpeg)\n", "\n", "Figura 13. Convenio de notación\n", "\n" ] }, { "cell_type": "markdown", "id": "desirable-finish", "metadata": {}, "source": [ "#### Relaciones muchos a muchos (M:N)" ] }, { "cell_type": "markdown", "id": "connected-magic", "metadata": {}, "source": [ "Una instancia en $A$ está asociada con un número cualquiera de instancias en $B$, y una instancia en $B$ está asociada con un número cualquiera de instancias en $A$. " ] }, { "cell_type": "markdown", "id": "second-mineral", "metadata": {}, "source": [ "![SGBD](../Imagenes/instancias_n_m.jpeg)\n", "\n", "\n", "\n", "Figura 14. Relación muchos a muchos entre instancias" ] }, { "cell_type": "markdown", "id": "selective-windsor", "metadata": {}, "source": [ "Puesto que los dos extremos de la relación tienen grado muchos, en ambos extremos se coloca la \"pata de ave\". \n", "\n", "Esta es una forma común de relación, aunque menos frecuente que la relación 1:N \n", "\n", "Las Figuras muestra como representar gráficamente una relación muchos a muchos en un diagrama entidad – relación" ] }, { "cell_type": "markdown", "id": "liquid-shore", "metadata": {}, "source": [ "![SGBD](../Imagenes/muchos_muchos.jpeg)\n", "\n", "\n", "\n", "Figura 15. Representación de una relación muchos a muchos" ] }, { "cell_type": "markdown", "id": "incredible-participation", "metadata": {}, "source": [ "Un ejemplo típico de una relación muchos a muchos es la relación entre entidades de tipo LIBRO y entidades de tipo AUTOR. La figura ilustra gráficamente la relación. \n", "\n", "Esta relación se interpreta de forma abstracta de la siguiente manera:\n", "\n", "- Un libro es escrito por uno o mas autores\n", "- Un autor es el autor de uno o más libros.\n" ] }, { "cell_type": "markdown", "id": "pediatric-colony", "metadata": {}, "source": [ "![SGBD](../Imagenes/autor_libro.jpeg)\n", "\n", "\n", "\n", "Figura 16. Ejemplo relación rel_AUTOR_LIBRO." ] }, { "cell_type": "markdown", "id": "fluid-popularity", "metadata": {}, "source": [ "### Participación de las entidades en las relaciones" ] }, { "cell_type": "markdown", "id": "nearby-camera", "metadata": {}, "source": [ "La participación de las entidades en una relación determina cuado una entidad de un tipo esta obligada a estar relacionarse con entidades del otro tipo" ] }, { "cell_type": "markdown", "id": "incident-paintball", "metadata": {}, "source": [ "#### Relación obligatoria" ] }, { "cell_type": "markdown", "id": "unique-blackjack", "metadata": {}, "source": [ "Se dice que una relación entre instancias de la entidad $A$ e instancias de la entidad $B$ es obligatoria por el extremo (por el lado) de las instancias de $A$, si toda instancia de la entidad $A$ debe estar relacionada con al menos una instancia de la entidad $B$. La obligatoriedad se representa en el modelo E/R mediante una línea continua en el extremo $A$ de la relación." ] }, { "cell_type": "markdown", "id": "helpful-order", "metadata": {}, "source": [ "#### Relación Opcional" ] }, { "cell_type": "markdown", "id": "nearby-burning", "metadata": {}, "source": [ "Se dice que una relación entre instancias de la entidad $A$ y entidades de la entidad $B$ es opcional por el extremo (por el lado) de las entidades de $A$, si toda instancia de la entidad $A$ puede estar relacionada con instancias de la entidad $B$. La opcionalidad se representa mediante una línea punteada en el extremo $A$ de la relación. \n", "\n", "\n", "En el ejemplo de la figura 16, la relación es obligatoria por el lado AUTOR, porque se asume que las entidades corresponden realmente a autores de libros. Por el lado libro la relación es opcional porque en la base de datos eventualmente puede haber libros de autores anónimos. " ] }, { "cell_type": "markdown", "id": "deluxe-member", "metadata": {}, "source": [ "#### Roles de las entidades en las relaciones" ] }, { "cell_type": "markdown", "id": "focused-omaha", "metadata": {}, "source": [ "El rol de la entidades en una relación corresponde a la forma como participan en la relación. Por ejemplo en la relación entre instancias de la entidad CIUDAD e instancias de la entidad DEPARTAMENTO, el rol por el lado de CIUDAD es “esta ubicada en”, y el rol por el lado DPERTAMENTO se enuncia como “es el departamento de”. Como se ha visto en los ejemplos anteriores el rol de las relaciones se escribe como una etiqueta. " ] }, { "cell_type": "markdown", "id": "fatal-belfast", "metadata": {}, "source": [ "#### Convenio de notación" ] }, { "cell_type": "markdown", "id": "metallic-creator", "metadata": {}, "source": [ "Por convención para el diagrama se escribirá el rol de las entidades del extremo izquierdo encima de la línea de relación y el rol de las entidades del extremo derecho se escribirá por debajo de la línea. \n", "\n", "\n", "La etiqueta se escribe en minúscula y como la obligatoriedad ya esta descrita por el tipo de línea (continua o punteada) en cada extremo, se tiene en cuenta para la lectura de la relación.\n", "\n", "La etiqueta de la relación debe ser preferencialmente una expresión conjugada con los verbos ser o estar, teniendo en cuenta que si la relación es obligatoria en la lectura de la relación se usa la expresión *debe* [ser|estar] y para relaciones opcionales la expresión *puede* [ser|estar]." ] }, { "cell_type": "markdown", "id": "liquid-collect", "metadata": {}, "source": [ "Por ejemplo, los roles de las entidades en las relaciones representadas en los diagramas de ejemplos de las figuras 12 y 16, se leen rigurosamente así:\n", "\n", "\n", "+ Para las relaciones entre instancias de la entidad CIUDAD y las instancias de DEPARTAMENTO (Figura 12):\n", " - Una ciudad debe estar ubicado en un departamento\n", " - Un departamento puede ser el departamento de varias ciudades\n", "\n", "\n", "+ Para relaciones entre instancias de LIBRO e instancias de Autor (Figura 16):\n", " - Un autor debe ser autor de al menos un libro\n", " - Un libro puede ser escrito por varios autores" ] }, { "cell_type": "markdown", "id": "economic-culture", "metadata": {}, "source": [ "## Atributos " ] }, { "cell_type": "markdown", "id": "oriented-cruise", "metadata": {}, "source": [ "\n", "Como se mencionó arriba, las entidades contienen atributos, Los atributos son las propiedades que posee una entidad. \n", "\n", "Usualmente los atributos son definidos para la entidad correspondiente en forma abstracta. \n", "\n", "En las instancias, los atributos corresponden a valores concretos. Por ejemplo *(17, Addison Wesley , Madison)* son los atributos que representan una instancia de una entidad EDITORIAL, y los atributos de la entidad Editorial son {IdEdi, NomEdi, Ciudad}. \n", "\n", "\n", "Los atributos de una entidad se utilizan para tres propósitos principalmente:\n", "\n", "\n", "+ Para identificar de manera única las entidades individuales en una clase entidad (Atributos de identificación). Por ejemplo en la entidad EDITORIAL, el atributo {IdEdi} identifica de manera única a cada editorial. El lector puede intuir que para este caso, el atributo NomEdi, que es el nombre del editorial puede servir también como identificador único. No ocurre lo mismo con la entidad LIBRO. El nombre de un libro no sirve de identificador único para la clase entidad Libro, así como el nombre de una persona no sirve de identificador único para una entidad PERSONA. \n", "\n", "+ Para incluir información que se requiere en la base de datos (Atributos informativos). Por ejemplo \n", " - IdInst\n", " - Nombre\n", " - Sigla\n", " - IdCiu\n", " \n", " son atributos de información de la entidad INSTITUCION en la tabla 2 arriba. \n", " \n", "+ Para describir relaciones entre entidades entre entidades (Atributos de relación). Por ejemplo en la tabla 2 {IdCiu} es un atributo de relación de la entidad INSTITUCION con la entidad CIUDAD. Este atributo permite establecer la relación entre instancias de la entidad INSTITUCION e instancias de la entidad CIUDAD. " ] }, { "cell_type": "markdown", "id": "assigned-rehabilitation", "metadata": {}, "source": [ "### Llaves, Super llaves y llave primaria" ] }, { "cell_type": "markdown", "id": "metallic-wallpaper", "metadata": {}, "source": [ " **Super llaves**. Una super llave es un conjunto de uno o más atributos que se toman colectivamente para identificar de forma única a cada una de las instancias de una entidad.\n", "\n", "Por ejemplo, considere la entidad LIBRO con atributos {IdLibro, NombreLibro, Autor}. En esta entidad podemos tener las siguientes super llaves\n", "\n", " - {IdLibro}\n", " - {IdLibro, NombreLibro}\n", " - {IdLibro, NombreLibro, Autor}\n", " - {IdLibro, Autor}\n", " - {NombreLibro, Autor}\n", " \n", " \n", "\n", "**Llaves candidatas.** Las llaves candidatas son super llaves que no tienen atributos redundantes. En otras palabras, las llaves candidatas son super llaves mínimas. Por ejemplo, en la entidad Libro, se tiene las siguientes llaves candidatas\n", "\n", " - {IdLibro}\n", " - {NombreLibro, Autor}\n", " \n", " \n", "Estas dos super llaves pueden ser claves candidatas, ya que las restantes super llaves tienen atributos redundantes. \n", "\n", "Por ejemplo las instancias de la entidad LIBRO pueden ser identficadas de manera única con las super llaves {IdLibro} y {IdLibro, NombreLibro}. Por lo tanto, {NombreLibro} es un atributo redundante y solamente {IdLibro} es una llave candidata.\n", "\n", "\n", "**Clave primaria** (primary key). es una llave candidata que elige el diseñador de la base de datos para identificar entidades en un conjunto de entidades. \n", "\n", "De las llaves candidatas en los ejemplos anteriore, cualquiera puede ser la llave primaria. Las otras llaves candidatas que no se elija como clave principal se conocerá como claves alternativas.\n", "\n", "**Llave.** En general, cualquier tipo de super llave, se llamará genéricamente como llave. En adelante solamente haremos la distinción de la llave primaria." ] }, { "cell_type": "markdown", "id": "valid-picture", "metadata": {}, "source": [ "#### Un nota sobre el DANE" ] }, { "cell_type": "markdown", "id": "subject-weapon", "metadata": {}, "source": [ "Para cerrar sobre super-llaves, un ejemplo adicional. Las intituciones de estadísticas oficiales suelen establecer establecer codificaciones para las instancias, de tal manera que el intercambio de información entre instituciones nacional e internacional se facilite.\n", "\n", "En el caso del DANE en Colombia por ejemplo, los departamentos (estados) y los municipios tienen asignado un código y toda la codificación recibe el nombre de Divipola (de división política).\n", "\n", "Divipola es entonces un atributo que es llave candidata en una base de datos que use le entidad MUNICIPIO (que en este caso incluye a todas las ciudades). \n", "\n", "Un buen diseño, sin embargo no debe incluir divipola como llave primaria de una tabla MUNICIPIO. Esta debe ser una llave alterna, que será utilizada para intercambio de información. \n", "\n", "La razón para esta decisión es que este tipo de llaves asociados a códigos generados por alguna institución, pueden limitar el diseño de una base de datos. Piense por ejemplo que, luego de algún tiempo, se hace necesario tener munipios de otros países. En ese caso, divipola deja de ser llave primaria.\n", "\n", "Las llaves primarias, por lo general son definidas como valores autonuméricos generados por el motor de la base de datos, que sirven para identificar de manera única a las instancias, pero que no tienen un significado o una interpretación más allá de ser identificadores de instancias." ] }, { "cell_type": "markdown", "id": "defensive-zealand", "metadata": {}, "source": [ "### Dominio de un atributo" ] }, { "cell_type": "markdown", "id": "auburn-interstate", "metadata": {}, "source": [ "El dominio de un atributo es el conjunto de posibles valores que puede tomar un atributo. Puede decirse que un atributo es una función que asigna un conjunto de instancias a un dominio.\n", "\n", "\n", "Desde un punto de vista muy matemático, una relación un un subconjunto de un producto cartesiano de conjuntos de dominios. Esto corresponde casi exactamente al concepto de relaciones entre instancias de entidades. \n", "\n", "Realmente, la única diferencia es que en la teoría de bases de datos, se asignan nombres a los atributos, mientras que los matemáticos usan subíndices para denotar n-plas. \n", "\n", "Así cada instancia de una entidad puede ser denotada como una n-pla. Por ejemplo (17, Addison Wesley , Madison) es la notación de una instancia de una entidad EDITORIAL. \n", "\n", "\n", "Si $A_1, A_2, \\cdots, A_n$ son atributos con dominios $D_1, D_2, \\cdots, D_n$ respectivamente, entonces una entidad $E$ con atributos $A_1, A_2, \\cdots, A_n$ es el conjunto definido por el producto cartesiano definido por\n", "\n", "$$\n", "E = D_1\\times D_2\\times \\cdots\\times D_n\n", "$$\n", "\n", "\n", "Cualquier subconjunto de E es un conjunto de instancias de tipo E.\n", "\n", "La entidad $E$ se suele notar por $E(A_1, A_2, \\cdots, A_n)$, y una instancia de tipo $E$ mediante $(a_1, a_2, \\cdots, a_n)$, en donde \n", "$a_i \\in A_i$." ] }, { "cell_type": "markdown", "id": "quantitative-commercial", "metadata": {}, "source": [ "### Atributos Atómicos" ] }, { "cell_type": "markdown", "id": "architectural-delaware", "metadata": {}, "source": [ "Un atributo es atómico si los elementos de su dominio se consideran indivisibles. \n", "\n", "Todos los ejemplos de atributos dados hasta ahora son atómicos. Consideremos un ejemplo de un atributo que no es atómico. \n", "\n", "Supóngase que en lugar de usar la relación de muchos a muchos entre las entidades LIBRO y AUTOR, se decide usar un único atributo en la entidad LIBRO, con el objeto de describir en tal atributo a los autores de un libro. La entidad tendría atributos {IdLibro, NombreLibro, Autores}. En la notación formal se tendría \n", "\n", "+ Libro(IdLibro, NombreLibro, Autores) \n", "\n", "Una instancia es tal caso sería por ejemplo\n", "\n", "- (1324, El libro del saber, (Luis Manrrique, Diógenes Vargas))\n", "\n", "\n", "El atributo Autores no es atómico, porque evidentemente, puede tener múltiples valores, para los casos de libros de más de un autor. \n", "\n", "Como encontraremos más adelante, un buen diseño de una base de datos solo admite atributos con dominios atómicos. " ] }, { "cell_type": "markdown", "id": "rotary-triumph", "metadata": {}, "source": [ "#### Nota sobre el nombre de las personas" ] }, { "cell_type": "markdown", "id": "neutral-share", "metadata": {}, "source": [ "Quizás ha observado que por lo general en los sistemas de información, el nombre de las personas se separa en Primer Apellido, Segundo Apellido y Nombres. \n", "\n", "Esta práctica tiene razones puramente técnicas de manejo de los datos, pero no quiere decir que el nombre completo de una persona sea un atributo divisible o no atómico." ] }, { "cell_type": "markdown", "id": "controversial-exclusion", "metadata": {}, "source": [ "### Tipos básicos de dominios de los atributos" ] }, { "cell_type": "markdown", "id": "composed-video", "metadata": {}, "source": [ "Los tipos de dominios usados fecuentemente en las bases de datos se clasifican en:\n", "\n", "\n", "+ Dominios numéricos: enteros, reales\n", "+ Dominios de tipo cadena. Cadenas de caracteres.\n", "+ Dominios lógicos (Solo admiten verdadero o falso)\n", "+ Dominios de tipo moneda\n", "+ Dominios de fechas\n", "+ Dominios de tipo objeto.\n", "+ Dominios de tipo hipervínculo." ] }, { "cell_type": "markdown", "id": "meaning-general", "metadata": {}, "source": [ "#### Ejercicio" ] }, { "cell_type": "markdown", "id": "latter-marine", "metadata": {}, "source": [ "*Determine en MySQL, MariaDB, PostgreSQL, los tipos de datos disponibles.*\n" ] }, { "cell_type": "markdown", "id": "pediatric-anxiety", "metadata": {}, "source": [ "Los motores de base de datos incluyen funciones para manipular datos para los distintos tipos de dominio. \n", "\n", "Los tipos de datos menos antiguos son el tipo objeto y el tipo hipervínculo. El tipo objeto permite hacer referencias a objetos construidos externamente a la base de datos como archivos de gráficos, hojas electrónicas, procesadores de palabra y otros. \n", "\n", "El tipo hipervínculo se usa actualmente para hacer vínculos a objetos sobre Internet, como direcciones electrónica o direcciones URL." ] }, { "cell_type": "markdown", "id": "processed-paste", "metadata": {}, "source": [ "### Restricciones de dominio de los atributos." ] }, { "cell_type": "markdown", "id": "measured-being", "metadata": {}, "source": [ "Un atributo definido sobre un dominio puede requerir restricciones sobre los valores que puede tomar. Una restricción de este tipo se denomina una restricción de domino. \n", "\n", "Por ejemplo, el atributo Nota en una entidad CURSO en un sistema de información de estudiantes es numérica, en general, pero está restringida a ser mayor o igual a cero. Entonces el dominio del atributo es real, con la restricción de dominio ser mayor o igual a cero.\n", "\n", "Otro ejemplo muy usual lo constituye un dominio descrito por extensión o enumeración. El ejemplo más clásico es el atributo Género en entidades de tipo Persona. Por general este atributo es de tipo cadena (de un carácter) y sus posibles valores son: “M” de masculino y “F” de femenino. En este caso, se debe tener una lista corta de posibles valores, de lo contrario es mejor usar una restricción de dominio. Modernamente, es posible tener valores adicionales para este tipo de atributo." ] }, { "cell_type": "markdown", "id": "rural-recognition", "metadata": {}, "source": [ "### Representación de atributos en el diagrama entidad–relación" ] }, { "cell_type": "markdown", "id": "alpha-shoot", "metadata": {}, "source": [ "Para representar un atributo en el diagrama se escribe el nombre en singular y letra minúscula dentro de la caja que representa la entidad. Al que corresponde y se usa el siguiente convenio de notación" ] }, { "cell_type": "markdown", "id": "beautiful-charge", "metadata": {}, "source": [ "#### Convenio de notación" ] }, { "cell_type": "markdown", "id": "tested-capability", "metadata": {}, "source": [ "+ Los nombres (identificadores) deben ser representativos y característicos de la Entidad a la cual pertenecen:\n", "+ No se debe usar el nombre de la entidad como parte del nombre del atributo\n", "+ A los atributos opcionales se les antepone el símbolo o (de opcional). Los atributos opcionales son aquellos que no son estrictamente requeridos en el momento de ingresar la información a la base de datos. Un atributo puede ser opcional porque puede ocurrir que no se disponga de la información en el momento de ingresar los datos a la base de datos o por que sencillamente algunas entidades no poseen tal atributo. \n", "+ A los atributos obligatorios se les antepone el símbolo * (asterisco). Al contrario de un atributo opcional, un atributo obligatorio debe ser ingresado en el momento de crear una entidad en la base de datos.\n", "+ A los atributos que forma la llave primaria se les antepone el símbolo # y se sobreentiende que son obligatorios.\n", "+ Los atributos de relación no se colocan en el diagrama, debido a que su presencia esta determinada por las líneas de relación. Estos atributos también reciben el nombre de **llave foránea**, debido a que siempre contienen la llave de la entidad con al que se establece la relación. Además por convención en el momento de la implementación se usa el mismo identificador que tiene en la entidad relacionada.\n", "+ Cuando el dominio de un atributo es por enumeración, se listan los valores uno debajo de otro, encerrando entre paréntesis cuadrados los respectivos valores." ] }, { "cell_type": "markdown", "id": "automotive-plenty", "metadata": {}, "source": [ "En la figura 17 se ilustra un diagrama posible de entidades CIUDAD y DEPARTAMENTO, y la posible relación entren ellas. " ] }, { "cell_type": "markdown", "id": "cubic-bridge", "metadata": {}, "source": [ "![SGBD](../Imagenes/atributos_e_r.jpeg)\n", "\n", "\n", "\n", "Figura 17. Ejemplo de notación de atributos en un diagrama entidad-relación" ] }, { "cell_type": "markdown", "id": "lyric-auditor", "metadata": {}, "source": [ "La Figura 18 presenta un ejemplo de representación de una entidad PERSONA que incluye el atributo de enumeración Genero." ] }, { "cell_type": "markdown", "id": "buried-calgary", "metadata": {}, "source": [ "\n", "![SGBD](../Imagenes/enum_atrib.jpeg)\n", "\n", "\n", "\n", "Figura 18. Ejemplo de notación de atributos enumerados en un diagrama entidad-relación" ] }, { "cell_type": "markdown", "id": "metallic-contamination", "metadata": {}, "source": [ "### Definiciones y convenciones avanzadas" ] }, { "cell_type": "markdown", "id": "responsible-corps", "metadata": {}, "source": [ "#### Relaciones recursivas" ] }, { "cell_type": "markdown", "id": "desirable-brain", "metadata": {}, "source": [ "Una relación es recursiva cuando se relaciona con sigo misma. En otra palabras, las instancias tiene relación con otras instancias de la misma entidad a la que pertenecen. En el diagrama entidad-relación se denota como en la figura 18. El símbolo de la relación se conoce como oreja de cerdo." ] }, { "cell_type": "markdown", "id": "explicit-tournament", "metadata": {}, "source": [ "![SGBD](../Imagenes/recursiva_e_r.jpeg)\n", "\n", "\n", "\n", "Figura 18. Ejemplo de una relación recursiva en un diagrama entidad-relación" ] }, { "cell_type": "markdown", "id": "jewish-trader", "metadata": {}, "source": [ "### Dependencia. Entidades fuertes y Entidades débiles" ] }, { "cell_type": "markdown", "id": "severe-picture", "metadata": {}, "source": [ "Una **entidad es fuerte** si tiene llave primaria. Es posible tener clases de entidades que no tiene llave primaria, estas se denominan **entidades débiles**. \n", "\n", "En estos casos, la existencia de una entidad débil depende de la existencia de una entidad fuerte. Un ejemplo típico son las entidades de tipo Transacción de cuentas bancarias. En este caso una entidad TRANSACCION no puede existir si no existe una entidad CUENTA.\n", "\n", "En una relación de grado uno a muchos (1:N), si toda instancia de la clase entidad de lado N sólo puede existir y ser nombrada en función de una instancia de la clase entidad de lado 1 la clase entidad de lado N es débil respecto a la clase entidad de lado 1 y se dice que la relación entre dos entidades es de dependencia\n", "\n", "Las Relaciones de dependencia se representan en el diagrama entidad relación mediante una línea perpendicular a la pata de ave. \n", "\n", "La Figura 19 ilustra la notación de relaciones de dependencia. Para la implementación práctica la clase entidad débil debe contener un atributo discriminador, y se arma una llave para esta entidad con la llave primaria de la entidad fuerte y el discriminador. \n", "\n", "En el ejemplo de las transacciones de una cuenta, la llave para una entidad de tipo transacción se forma agregando un atributo discriminador (NumeroTrans) al identificador de la cuenta relacionada.(Figura 19)." ] }, { "cell_type": "markdown", "id": "english-lecture", "metadata": {}, "source": [ "![SGBD](../Imagenes/dependencia_e_r.jpeg)\n", "\n", "\n", "\n", "Figura 19. Ejemplo de una relación de dependencia un diagrama entidad-relación" ] }, { "cell_type": "markdown", "id": "compact-treasury", "metadata": {}, "source": [ "### Resolución de relaciones muchos a muchos" ] }, { "cell_type": "markdown", "id": "correct-quantum", "metadata": {}, "source": [ "Una relación de muchos a muchos se puede implementar mediante la introducción de dos relaciones de dependencia.\n", "\n", "Supongamos por ejemplo que se tiene una relación de cardinalidad muchos a muchos entre dos entidades digamos $A$ y $B$. Entonces se intrOduce una tercera entidad digamos $C$, que depende de $A$ y $B$ y que en general no tiene atributos propios. La siguientes figuras ilustran la situación." ] }, { "cell_type": "markdown", "id": "previous-attachment", "metadata": {}, "source": [ "\n", "![SGBD](../Imagenes/resol_n_n.jpeg)\n", "\n", "\n", "Figura 20. Resolucion de relaciones muchos a muchos un diagrama entidad-relación" ] }, { "cell_type": "markdown", "id": "stopped-pasta", "metadata": {}, "source": [ "\n", "![SGBD](../Imagenes/resol_muchos_muchos_2.jpeg)\n", "\n", "\n", "Figura 21. Resolucion de relaciones muchos a muchos opcional en ambos lados en un diagrama entidad-relación" ] }, { "cell_type": "markdown", "id": "attended-transport", "metadata": {}, "source": [ "### Relaciones Múltiples entre entidades" ] }, { "cell_type": "markdown", "id": "after-yemen", "metadata": {}, "source": [ "Existen situaciones en las cuales es posible que exista más de una relación definida sobre la misma pareja de clases de entidades. En este caso, cada relación tiene un significado diferente e independiente de las demás. \n", "\n", "Un ejemplo son las relaciones entre entidades PERSONA y entidades de CIUDAD (ver Figura 22). En este caso es necesario señalar cada una de las relaciones en diagrama entidad relación. El rol de cada extremo de cada relación permite la lectura cada relación." ] }, { "cell_type": "markdown", "id": "patient-cookbook", "metadata": {}, "source": [ "\n", "![SGBD](../Imagenes/multiple_relacion.jpeg)\n", "\n", "\n", "Figura 22. Ejemplo de múltiples relaciones entre dos entidades en un diagrama entidad-relación" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.12" } }, "nbformat": 4, "nbformat_minor": 5 }