miércoles, 25 de mayo de 2011

Modelo Entidad - Relación

Un diagrama o modelo entidad-relación (a veces denominado por sus siglas, E-R "Entity relationship", o, "DER" Diagrama de Entidad Relación) es una herramienta para el modelado de datos de un sistema de información. Estos modelos expresan entidades relevantes para un sistema de información así como sus interrelaciones y propiedades.


El modelo de datos entidad-relación está basado en una percepción del mundo real que consta de una colección de objetos básicos, llamados entidades, y de relaciones entre esos objetos.


Entidad

Representa una “cosa” u "objeto" del mundo real con existencia independiente, es decir, se diferencia unívocamente de cualquier otro objeto o cosa, incluso siendo del mismo tipo, o una misma entidad.
Algunos Ejemplos:
  • Una persona. (Se diferencia de cualquier otra persona, incluso siendo gemelos).
  • Un automóvil. (Aunque sean de la misma marca, el mismo modelo,..., tendrán atributos diferentes, por ejemplo, el número de bastidor).
  • Una casa (Aunque sea exactamente igual a otra, aún se diferenciará en su dirección).
Una entidad puede ser un objeto con existencia física como: una persona, un animal, una casa, etc. (entidad concreta); o un objeto con existencia conceptual como: un puesto de trabajo, una asignatura de clases, un nombre,etc. (entidad abstracta).
Una entidad está descrita y se representa por sus características o atributos. Por ejemplo, la entidad Persona puede llevar consigo las características: Nombre, Apellido, Género, Estatura, Peso, Fecha de nacimiento, etc...


Atributos

Los atributos son las caracteristicas que definen o identifican a una entidad, estas pueden ser muchas, y solo el diseñador utiliza o implementa las que considere mas relevantes. Los atributos son las propiedades que describen a cada entidad en un conjunto de entidades.
Un conjunto de entidades dentro de una entidad, tiene valores específicos asignados para cada uno de sus atributos, de esta forma, es posible su identificación unívoca.
Ejemplos:
A la colección de entidades Alumnos, con el siguiente conjunto de atributos en común, (id, nombre, edad, semestre), pertenecen las entidades:
  • (1, Sofia, 38 años, 2)
  • (2, Josefa, 19 años, 5)
  • (3, Carlos, 20 años, 2)
  • ...

Cada una de las entidades pertenecientes a este conjunto se diferencia de las demás por el valor de sus atributos. Nótese que dos o más entidades diferentes pueden tener los mismos valores para algunos de sus atributos, pero nunca para todos.
En particular, los atributos identificativos son aquellos que permiten diferenciar a una instancia de la entidad de otra distinta. Por ejemplo, el atributo identificativo que distingue a un alumno de otro es su número de id.
Para cada atributo, existe un dominio del mismo, este hace referencia al tipo de datos que será almacenado o a restricciones en los valores que el atributo puede tomar (Cadenas de caracteres, números, solo dos letras, solo números mayores que cero, solo números enteros...).
Cuando una entidad no tiene un valor para un atributo dado, este toma el valor nulo, bien sea que no se conoce, que no existe o que no se sabe nada al respecto del mismo.


Relación

Describe cierta dependencia entre entidades o permite la asociación de las mismas.
Ejemplo:

Dadas dos entidades "Habitación 502" y "Mark", es posible relacionar que la 
habitacion 502 se encuentra ocupada por el huésped de nombre Mark.
Una relación tiene sentido al expresar las entidades que relaciona. En el ejemplo anterior, Un Huésped (entidad), se aloja (relación) en una habitación (entidad).


Conjunto de relaciones

Consiste en una colección, o conjunto, de relaciones de la misma naturaleza.
Ejemplo:
Dados los conjuntos de entidades "Habitación" y "Huésped", todas las relaciones de la forma habitación-huésped, permiten obtener la información de los huéspedes y sus respectivas habitaciones.
La dependencia o asociación entre los conjuntos de entidades es llamada participación. En el ejemplo anterior los conjuntos de entidades "Habitación" y "Huésped" participan en el conjunto de relaciones habitación-huésped.
Se llama grado del conjunto de relaciones a la cantidad de conjuntos de entidades participantes en la relación.


Restricciones

Son reglas que deben mantener los datos almacenados en la base de datos. No se deben quebrantar a menos que tenga otra relacion de una tabla de uno a muchos.


Correspondencia de cardinalidades

Dado un conjunto de relaciones en el que participan dos o más conjuntos de entidades, la correspondencia de cardinalidad indica el número de entidades con las que puede estar relacionada una entidad dada.
Dado un conjunto de relaciones binarias y los conjuntos de entidades A y B, la correspondencia de cardinalidades puede ser:
  • Uno a Uno: Una entidad de A se relaciona únicamente con una entidad en B y viceversa (ejemplo relación médico - paciente).
  • Uno a varios: Una entidad en A se relaciona con cero o muchas entidades en B. Pero una entidad en B se relaciona con una única entidad en A (ejemplo vendedor - ventas).
  • Varios a Uno: Una entidad en A se relaciona exclusivamente con una entidad en B. Pero una entidad en B se puede relacionar con 0 o muchas entidades en A.
  • Varios a Varios: Una entidad en A se puede relacionar con 0 o muchas entidades en B y viceversa (ejemplo gobierno - ciudadanos).

Restricciones de participación

Dado un conjunto de relaciones R en el cual participa un conjunto de entidades A, dicha participación puede ser de dos tipos:
  • Total: Cuando cada entidad en A participa en al menos una relación de R.
  • Parcial: Cuando al menos una entidad en A NO participa en alguna relación de R.

EJEMPLO GENERAL


EMPRESA - BECAS

Esta base de datos se refiere a la asociación de Becas para los hijos de los trabajadores de determinada empresa.

EMPLEADO
NOMBRE
TIPO
LONGITUD
DESCRIPCIÓN
DNI_empleado
Integer
8

Nombre_empleado
Char
30

Salario
Double
10

No_Seguriad_social
Integer
10

Tipo_empleado
Integer
1
1.Director 2.R.en ventas 3.Ingenieros 4.Otros
Cargo_empleado
Char
30


HIJOS
NOMBRE
TIPO
LONGITUD
DESCRIPCIÓN
DNI_Hijo
Integer
8

Nombre_hijo
Char
30

Fecha_nacimiento
Date


Estudios
Char
100


BECAS
NOMBRE
TIPO
LONGITUD
DESCRIPCIÓN
Codigo_becas
Integer
8

Fecha_Concesión
Date


Cuantia
Double



DPTO
NOMBRE
TIPO
LONGITUD
DESCRIPCIÓN
Codigo_Dpto
Integer
8

Nombre_Dpto
Char
30

Localización
Char
20

No_empleados
Integer
5


PROYECTOS
NOMBRE
TIPO
LONGITUD
DESCRIPCIÓN
Codigo_Proyecto
Integer
8

Nombre_Proyecto
Char
30

Fecha_inicio
Date


MODELO RELACIONAL

EMPLEADO (#DNI_empleado, nombre_empleado, Salario, No_seguridad_social, Tipo_empleado, Cargo_empleado)
HIJOS (#DNI_hijo, Nombre_hijo, fecha_nacimiento, estudios, #codigo_becas)
BECAS (#Codigo_besas, fecha_concesion, cuantia)
DPTO (#Codigo_Dpto, Nombre_Dpto, localización, No_empleados)
PROYECTOS (#Codigo_proyecto, nombre_proyecto, fecha_inicio)


Este diagrama Entidad - Relación fue diseñado en un programa llamado DBDesigner, este facilita la creación del mismo. Si les interesa descargarlo su link es el siguiente:



Lenguaje SQL


Esta parte del Blog estará dedicada enteramente al lenguaje SQL más que todo a su implementación en la aplicación Microsoft ® SQL Server 2008, ya que en esta será en donde apliquemos los conocimientos ya dados anteriormente.

INTRODUCCIÓN

SQL es una herramienta para organizar, gestionar y recuperar datos almacenados en una base de datos informática. El nombre "SQL" es una abreviatura de Structured Query Languaje (Lenguaje de consultas estructurado). Como su propio nombre indica, SQL es un lenguaje informático que se puede utilizar para interaccionar con una base de datos y más concretamente con un tipo especifico llamado base de datos relacional.

SQL es a la vez un lenguaje fácil de aprender y una herramienta completa para gestionar datos. Las peticiones sobre los datos se expresan mediante sentencias, que deben escribirse de acuerdo con unas reglas sintácticas y semánticas de este lenguaje.


Características:

  • Estructuras de datos simples
  • Operadores potentes
  • Periodos de aprendizaje inicial cortos
  • Mejora de la independencia de datos
  • Modo de uso dual (interactivo o inmerso)
  • Optimización


Las sentencias SQL pueden dividirse en cuatro tipos:

  • Sublenguaje de definición de datos(DDL)
  • Sublenguaje de control de datos(DCL)
  • Sublenguaje de manipulación de datos(DML)
  • Lenguaje procedural(PL)



DDL
Proporciona órdenes para definir esquemas de relación, eliminar relaciones, crear índices y modificar esquemas de relación.

DCL
Incluye órdenes que permiten especificar controles de seguridad a los datos almacenados como definición de vistas, especificación de privilegios de acceso, comprobación de condiciones de integridad y control de concurrencia.



DML
Interactivo: lenguaje de consulta basado en el álgebra relacional y el calculo relacional de tuplas. También incluye ordenes para insertar, suprimir y modificar tuplas de la base de datos
Inmerso: lenguaje diseñado para utilizar dentro de otros lenguajes.


PL
Lenguaje para la creación de procedimientos almacenados.





DDL

Creación de un esquema

CREATE SCHEMA <nombre_esquema> AUTHORIZACION <nombre>

Definición de una relación (tabla):

CREATE TABLE <nombre_tabla>(
<nombre_atributo> <tipo_atributo>(NULL/NOT NULL)

Ejemplo

CREATE TABLE ESTUDIANTE(
Cod_Estudiante INTEGER NOT NULL,
Nombre_Estudiante VARCHAR(30) NOT NULL,
Apellido_Estudiante VARCHAR(30) NOT NULL,
DNI_Estudiante INTEGER NOT NULL,
Dir_Estudiante VARCHAR(30) NOT NULL,
Tel_Estudiante INTEGER NOT NULL,
Programa_Estudiante INTEGER NOT NULL,
PRIMARY KEY (Cod_Estudiante)
);