|
|
Línea 13: |
Línea 13: |
| <div id=parrafo> | | <div id=parrafo> |
| <div id=parrafo> | | <div id=parrafo> |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| ===BASES DE DATOS: Introducción=== | | ===BASES DE DATOS: Introducción=== |
| Una muy breve introducción sobre lo que es una '''''base de datos'''''. Es éste un concepto conocido, pues es un término que habitualmente usamos de forma coloquial.<br /> | | Una muy breve introducción sobre lo que es una '''''base de datos'''''. Es éste un concepto conocido, pues es un término que habitualmente usamos de forma coloquial.<br /> |
Línea 59: |
Línea 74: |
| [[imagen:ciclo_vida_bd.png]] | | [[imagen:ciclo_vida_bd.png]] |
| | | |
− | ===Nivel Conceptual===
| + | {{Bases_datos/Nivel_conceptual}} |
− | *Corresponde a obtener las especificaciones del cliente
| + | |
− | *En este nivel debemos establecer comunicación con el cliente y técnicos.
| + | |
− | ;Cliente
| + | |
− | Grupo de personas que saben mucho de su negocio, pero seguramente poco de tecnologías de desarrollo
| + | |
− | ;Técnico
| + | |
− | Persona/s que tienen (deben tener) un alto conocimiento de desarrollo técnico, pero seguramente saben poco del negocio que han de automatizar
| + | |
− | ; Objetivo
| + | |
− | Qué el grupo técnico tenga un conocimiento detallado del negocio y puedan desarrollar una aplicación que satisfaga
| + | |
− | las necesidades del cliente<BR />
| + | |
− | [[Imagen:especificacion1.png]]
| + | |
− | ====Modelado conceptual====
| + | |
− | <br />
| + | |
− | {{MRM_Definicion|Title=Modelado| | + | |
− | Lo entederemos como un '''''lenguaje'''''<br 7>
| + | |
− | que nos va a permitir describir datos .}}
| + | |
− | *Serán los datos que queremos almacener de un determinado universo del discurso.
| + | |
− | *Usaremos el Modelo Entidad/Relación
| + | |
− | *también conocido como modelo Entidad interrelacion o modelo de chen}}
| + | |
− | {{MRM_Definicion|Title=El diagrama entidad-interrelación (DEI)|
| + | |
− | Este diaglama es un modelado que permite representar la estática del modelo de datos entidad-interrelación mediante un lenguaje gráfico de definición de estructuras.}}
| + | |
− | {{MRM_Definicion|Title=Elementos o lexemas de este lenguaje|
| + | |
− | ;entidades
| + | |
− | ;atributos
| + | |
− | ;interrelaciónes entre entidades.
| + | |
− | }}
| + | |
− | | + | |
− | ====Modelo Entidad/Relación====
| + | |
− | *Es un modelo que nos va a permitir mostrar la parte estática del sistema
| + | |
− | *Solo va a mostrar los elementos o '''''entidades''''' y las '''''relaciones''''' que ocurren ente ellos
| + | |
− | | + | |
− | =====Entidades=====
| + | |
− | *Las entidades son esos elementos de los cuales queremos guardar información
| + | |
− | | + | |
− | {{MRM_Definicion|Title=Entidad|
| + | |
− | El conjunto de elementos u objetos concretos o abstractos de los que se quiere almacenar información dentro de este sistema}}
| + | |
− | [[Imagen:concepto_entidad.png]]
| + | |
− | ;Representación gráfica
| + | |
− | *Su representación es un rectángulo
| + | |
− | *El nombre se especifica dentro del rectángulo
| + | |
− | *Se suelen poner en singular
| + | |
− | [[Imagen:entidad.png]]
| + | |
− | *Una entidad va a representar un conjunto de elementos, por ejemplo la entidad '''''Alumno''''' representará varios alumnas
| + | |
− | [[Imagen:entidad_conjunto.png]]
| + | |
− | ;Tipos de entidades
| + | |
− | {{MRM_Definicion|Title=Entidades débiles|
| + | |
− | *Son entidades que dependen de otra para que existan o incluso para poderse identificar
| + | |
− | *Se representan con un doble cuadrado
| + | |
− | [[Archivo:Entidad_debil.png]]
| + | |
− | }}
| + | |
− | {{MRM_Definicion|Title=Tipos de debilidades|
| + | |
− | ;Debilidad en existencia
| + | |
− | *Para que exista un elemento de la entidad tiene que existir el elemento de la entidad con el que está relacionado
| + | |
− | {{MRM_Ejemplo|Title=Debilidad en existencia|
| + | |
− | *Supongamos el siguiente ejemplo
| + | |
− | En una empresa que tiene '''''empleados''''' se quiere saber los '''''familiares'''''
| + | |
− | de los empleados para por ejemplo tener acceso a las instalaciones
| + | |
− | o acceder a determinadas promociones
| + | |
− | Si un empleado dejara de serlo, claramente los familiares de ese empleado
| + | |
− | ya no serían datos que a la empresa le interesara conocer
| + | |
− | Aquí vemos la debilidad en existencia
| + | |
− | [[Archivo:debilidad_existencia_emp_fam.png]]
| + | |
− | }}
| + | |
− | ;Debilidad en identificación
| + | |
− | *Son entidades que dependen de otra para que existan o incluso para poderse identificar
| + | |
− | *Se representan con un doble cuadrado
| + | |
− | {{MRM_Ejemplo|Title=Debilidad en identificación|
| + | |
− | *Es una debilidad más fuerte
| + | |
− | *En ella para poder '''''identificar''''' un elemento de una entidad, necesitamos identificar previamente el elemento de la entidad con el que está relacionado
| + | |
− | *Supongamos un ejemplo
| + | |
− | En un hotel tenemos '''''plantas''''' (primero, segunda, ...)
| + | |
− | cada planta tiene unas características y más atributos que nos interesa guardar
| + | |
− | Las plantas tienen '''''habitaciones''''' que se identifican por
| + | |
− | un número (de la 1 hasta el número de habitaciones que haya.
| + | |
− | Está claro que para saber de qué habitación hablamos en un momento dado,
| + | |
− | no podemos decir la habitacion 10, habrá que decir la habitación 10,
| + | |
− | de la planta 2 o la que sea
| + | |
− | Aquí vemos la debilidad en ''identificación'' ya que ''para identificar un elemento
| + | |
− | de la entidad habitación, previamente necesitamos conocer el elemento de la entidad
| + | |
− | '''''Planta''''' con el que está relacionado''.
| + | |
− | Por supuesto que también es una debilidad en existencia,
| + | |
− | ya que si desapareciera una planta, desaparecerían también las habitaciones.
| + | |
− | [[Archivo:debilidad_identificacion_pla_hab.png]]
| + | |
− | }}
| + | |
− | | + | |
− | ;Jerarquía entre entidades
| + | |
− | *Como ya hemos estudiado en la herencia dentro de la programación orientada a objetos, puede ocurrir que una entidad se pueda especializar.
| + | |
− | *Es decir que una entidad pueda ser de diferentes tipos, y ademas, cada uno de esos subtipos tengan atributos o relaciones de forma individual (no compartidos).
| + | |
− | *En este caso podremos establecer una jerarquía
| + | |
− | {{MRM_Definicion|Title=Jerarquia|
| + | |
− | *Es una estructura de datos en la cual tenemos entidades que se especializan en subtimos
| + | |
− | *Cada subtipo a de tener atributos y/o relaciones de forma individual (Si no fuera así sería suficiente con tener un atributo llamado tipo)
| + | |
− | {{MRM_Ejemplo|Title=Jerarquía con atributos individuales|
| + | |
− | Una editorial realiza '''''publicaciones'''''. Estas publicaciones pueden
| + | |
− | ser libros en cuyo caso necesitamos conocer el autor principal
| + | |
− | o también revistas, en cuyo caso necesitamos la tirada (número de ejmplares
| + | |
− | de esa publicación)
| + | |
− | [[Imagen:jerarquia_1.png]]
| + | |
− | | + | |
− | }}
| + | |
− | {{MRM_Ejemplo|Title=Jerarquía con relaciones individuales|
| + | |
− | En el ejemplo anterior además una '''''publicaciones''''' tiene subscriptores
| + | |
− | [[Imagen:jerarquia_2.png]]
| + | |
− | }}
| + | |
− | {{MRM_Ejemplo|Title=Entidad con un atributo tipo, pero sin jerarquía|
| + | |
− | [[Imagen:jerarquia_3.png]]
| + | |
− | }}
| + | |
− | | + | |
− | }}
| + | |
− | ;Concepto de agregación
| + | |
− | | + | |
− | =====Atributos=====
| + | |
− | *Qué son
| + | |
− | {{MRM_Definicion|Title=Atributos|
| + | |
− | ;Son las características que queremos guardar de las entidades
| + | |
− | *Van a permitir diferenciar una elemento de otro dentro de la entidad
| + | |
− | *Se pueden representar de diferentes maneras, usaremos un cículo
| + | |
− | [[Imagen:atributo.png]]
| + | |
− | *Se une a la entidad con una línea
| + | |
− | [[Imagen:atributo_entidad.png]]
| + | |
− | }}
| + | |
− | ;Tipos de atributos
| + | |
− | {{MRM_Definicion|Title=Atributo Clave|
| + | |
− | ;Hemos dicho que una entidad representa un conjunto de elementos
| + | |
− | *Por definición un conjunto está formado por 0 o más elementos los cuales han de ser necesariamente diferenciables
| + | |
− | *Aplicado a nuestro caso, quiere decir que hemos de poder diferenciar dos elementos cualesqueira de nuestro conjunto.
| + | |
− | *Esto se consigue teniendo uno o más atributos que constituyan la clave, es decir que sus valores no se pueden repetir.
| + | |
− | {{MRM_Ejemplo|Title=Representacion|
| + | |
− | [[Archivo:atributo_clave.png]]<br />
| + | |
− | *Otro caso:<br />
| + | |
− | [[Archivo:atributo_clave2.png]]<br />
| + | |
− | }}
| + | |
− | | + | |
− | }}
| + | |
− | {{MRM_Definicion|Title=Atributo Compuesto|
| + | |
− | *Es un atributo que a su vez está formado por más atributos
| + | |
− | {{MRM_Ejemplo|Title=Representacion|
| + | |
− | Se representa ligando con una flecha al atributo compuesto sus componentes
| + | |
− | [[Archivo:atributo_compuesto.png]]<br />
| + | |
− | }}
| + | |
− | | + | |
− | }}
| + | |
− | {{MRM_Definicion|Title=Atributo Multivaluado|
| + | |
− | *Ocurre cuando un atributo puede tomar varios valores.
| + | |
− | {{Nota|No confundir con el hecho de que pueda tomar un valor
| + | |
− | entre una lista de valores posibles}}
| + | |
− | {{MRM_Ejemplo|Title=Representación|
| + | |
− | ;Se representa con un doble círculo
| + | |
− | Un alumno puede hablar varios idiomas
| + | |
− | [[Archivo:atributo_multivaluado1.png]]
| + | |
− | Un alumno estudiante puede tener varios estudios
| + | |
− | [[Archivo:atributo_multivaluado2.png]]
| + | |
− | Un alumno estudiante puede tener varios estudios pero solo nos interesa el de mayor nivel entre (ESO, BASH, CICLO, CERTIFICADO, GRADO)
| + | |
− | [[Archivo:atributo_multivaluado3.png]]
| + | |
− | }}
| + | |
− | }}
| + | |
− | | + | |
− | | + | |
− | {{MRM_Definicion|Title=Atributo Derivado
| + | |
− | *Es aquel atributo cuyo valor no necesitamos almacenarlo, ya que lo podemos calcular a partir de los valores de otro/s atributos y/o valores del sistema.
| + | |
− | {{MRM_Ejemplo|Title=Representación|
| + | |
− | ;Se representa con líneas discontinuas en el círculo
| + | |
− | De un alumno se quiere saber su fecha de nacimiento y su edad
| + | |
− | La edad la podremos calcular a partir de la fecha de nacimiento
| + | |
− | y de la fecha actual que siempre podremos obtener del sistema
| + | |
− | [[Archivo:atributo_derivado.png]]
| + | |
− | | + | |
− | | + | |
− | }}
| + | |
− | ;Atributos de la relación
| + | |
− | {{MRM_Definicion|Title=Atributo de la relación|
| + | |
− | *Hay muchas ocasiones en las cuales las propiedades o características se establecen entre dos entidades que se relacionan
| + | |
− | *Pero en realidad no pertenecen en particular a ninguna de ellas, sino que son características que toman valor cuando se establece la relación entre dos elementos relacionados
| + | |
− | *En este caso diremos que el atributo es de la relación.
| + | |
− | {{MRM_Ejemplo|Title=Atributos de la relación|
| + | |
− | Un programador trabaja en un proyecto con un determinado cargo
| + | |
− | el programador puede desempeñar diferentes cargos:
| + | |
− | (analista, programador, diseñador de software, maquetador)
| + | |
− | Este atributo toma valor cuando un ''programador'' '''trabaja''' en un ''proyecto''
| + | |
− | Lo hace con undeterminado '''''cargo'''''.
| + | |
− | [[Imagen:atributo_relacion.png]]
| + | |
− | {{Nota;: Los atributos pueden ser también de la relación}}
| + | |
− | }}
| + | |
− | }}
| + | |
− | | + | |
− | =====Interrelaciones o vínculos=====
| + | |
− | <br />
| + | |
− | {{MRM_Definicion|Title=Relaciones|
| + | |
− | *Establecen las cardinalidades entre los elementos que se relacionan de entidades
| + | |
− | [[Imagen:cardinalidades_1.png]]
| + | |
− | *Sólo nos interesan los valores mínimos ( 0 o 1) y los máximos ( 1 o n).
| + | |
− | *Lo que hay que hacer es establecer las preguntas de formas correctas.
| + | |
− | {{MRM_Ejemplos|Title=Analicemos el caso anterior|
| + | |
− | {{MRM_Pregunta|Title=Pregunta para obtener el mínimo ( 0 o 1)|
| + | |
− | ;Puede un cliente no tener facturas
| + | |
− | Si es '''''SI''''' entences ponemos un '''''0'''''
| + | |
− | Si es '''''NO''''' entences ponemos un '''''1'''''
| + | |
− | }}
| + | |
− | {{MRM_Pregunta|Title=Pregunta para obtener el máximo ( 1 o N)|
| + | |
− | ;Puede un cliente tener muchas facturas
| + | |
− | Si es '''''SI''''' entences ponemos un '''''N'''''
| + | |
− | Si es '''''NO''''' entences ponemos un '''''1'''''
| + | |
− | }}
| + | |
− | }}
| + | |
− | {{MRM_Ejemplo|Title=Representación|
| + | |
− | [[Imagen:Cardinalidades_2.png]]
| + | |
− | }}
| + | |
− | {{MRM_Definicion|Title=Cardinalidades de la relación|
| + | |
− | ;Cogiendo los máximos de las cardinalidades de las entidades, colocamos los máximos en las relaciones
| + | |
− | *Esta pareja de números se llama la cardinalidad de la relación
| + | |
− | *Los valores pueden ser '''''(1:1), (M:N) o (1:N)'''''
| + | |
− | [[Imagen:Cardinalidades_2.png]]
| + | |
− | }}
| + | |
− | | + | |
− | *Lo anteriormente expuesto corresponden a las cardinalidades de la entidad
| + | |
− | *En el caso anterior diremos que la cardinalidad de '''''Cliente''''' es '''''(1,1)''''' y la de '''''factura''''' es '''''(0,N)'''''
| + | |
− | *El hecho de ponerlos en los extremos opuestos favorece la lectura
| + | |
− | Un cliente tiene '''''0''''' o '''''Muchas''''' facturas
| + | |
− | Una Factura pertenece a '''''1''''' y solo '''''1''''' Cliente
| + | |
− | }} | + | |
| | | |
− | *Pueden ser débil si relacionan una entidad fuerte con una débil
| |
− | ;Cardinalidad
| |
− | *Qué es
| |
− | #Cardinalidad de la entidad
| |
− | #Cardinalidad de la relación
| |
− | ;Relaciones
| |
| <!--{{Bases_Datos/Modelo_Logico}}--> | | <!--{{Bases_Datos/Modelo_Logico}}--> |
| ===Nivel Físico=== | | ===Nivel Físico=== |