martes, 24 de agosto de 2010

Vínculos entre tablas (Relaciones)


Para diseñar una base de datos lo primero que se requiere es identificar cual es la información que necesitan conocer los usuarios de la misma. Esto se obtiene de la especificación de los requerimientos de parte del usuario.


El siguiente paso es traducir estos requerimientos en un esquema conceptual de la base de datos. Se emplea el diagrama entidad-relación para representarlo gráficamente.

El diagrama entidad-relación se basa en "una percepción del mundo real que consiste en una colección de objetos básicos llamados entidades y relaciones entre estos objetos"
El diagrama entidad-relación es el modelo más ampliamente usado para el diseño conceptual de bases de datos y fue introducido por Peter Chen en 1976.


Conceptos básicos:


"Una ENTIDAD es un objeto que se distingue de otros objetos por medio de un conjunto específico de atributos". Por ejemplo algunas entidades pueden ser: Alumno, Empleado, Artículo, etc.


Un juego de entidades es un conjunto de entidades del mismo tipo que comparten las mismas propiedades o atributos. Ejemplo: La totalidad de los alumnos de una escuela.


ATRIBUTOS. Representan las propiedades básicas de las entidades. Cada entidad tiene un juego de atributos cuyos valores le identifican en forma única. La entidad "Alumno" podría tener los atributos: nombre, apellido, año de nacimiento, etc.


TIPOS DE ATRIBUTOS


SIMPLES: son aquellos que no se han dividido en subpartes. (Por ejemplo del numero de control de un alumno)


COMPUESTOS: son los que pueden dividirse en otros atributos, por ejemplo el atributo nombre, puede dividirse en nombre, apellido materno y apellido paterno.


MONOVALUADO (de un solo valor) Por ejemplo el atributo sexo es único.


MULTIVALOR: Por ejemplo un alumno puede tener cero o más números telefónicos.


DERIVADO: el valor de este tipo de atributo es obtenido a partir de los valores de otro. Por ejemplo la edad se deriva de la fecha de nacimiento (en relación con la fecha actual).


Una RELACIÓN es una asociación entre diferentes entidades. Por ejemplo un alumno con calificación (de una cierta materia).



La cardinalidad expresa el número de entidades a las que se puede asociar otra entidad a través de un conjunto de relaciones. (derivado de Cardinal : que expresa un número)


Tipos de relaciones (Cardinalidad )
  • Uno a uno



Una entidad en A esta asociada con una entidad en B y viceversa (por ejemplo el nombre del alumno con su número de control, o un aparato y su número de serie.)
  • Uno a muchos (ó muchos a uno )




Una entidad en C esta asociada con 0 ó más entidades en D. (por ejemplo "Un profesor puede impartir varias clases. Pero una clase solo la imparte un profesor". Otro ejemplo "Una madre puede tener cualquier número de hijos, pero cada hijo pertenece a una sola madre").
  • Muchos a muchos

Una entidad en E esta asociada con cualquier número de entidades en F (0 ó más) y viceversa. Por ejemplo "en un proyecto de investigación puede haber cualquier número de investigadores, un investigador puede participar en cero o varias investigaciones".
En el diseño de una base de datos no se permiten relaciones directas “muchos a muchos”. Se tiene que añadir una tabla entre las dos, que sirva de enlace y evite que las dos tablas queden relacionadas directamente.

Para mayor información lea los siguientes apuntes: Modelo Entidad Relación de Guillermo Storti et al.
Podemos accesar en Internet a más de 500 modelos entidad relación de bases de datos, aunque estan en inglés son facilmente entendibles por tratarse de diagramas.
El creador de todos estos modelos de base de datos es un especialista que ha creado las bases de datos de múltiples empresas en los EE.UU. y Europa, quien cita: "el diseño de estos modelos de datos me da la oportunidad de devolver algo a la comunidad de base de datos que me ha proporcionado una buena forma de vida durante más de 15 años"

Al establecer relaciones, es usual definir cuales campos son los más importantes.
CLAVE o LLAVE PRIMARIA Es el atributo que se usa para diferenciar una entidad de otra, por ejemplo un alumno de otro (en este caso la llave primaria es el numero de control).
  • Cada tabla (juego de entidades) debe tener una llave primaria.
  • La llave primaria debe ser única y no cambiar con el tiempo.

Una vez definida la clave principal, se puede utilizar en otras tablas para hacer referencia a la tabla que contiene la clave principal. Por ejemplo, un campo ID_alumno de la tabla Alumnos podría aparecer también en la tabla Matemáticas. En la tabla Alumnos es la clave principal y en la tabla Matemáticas es una clave externa o foránea. (Una clave externa, en otras palabras, es la clave principal de otra tabla).
La integridad referencial es un sistema de reglas que utiliza la base de datos para garantizar que las relaciones entre los registros de tablas relacionadas son válidas y que no se eliminen ni modifiquen accidentalmente datos relacionados.
Usualmente se maneja con dos opciones:
Cuando la casilla de verificación Actualizar en cascada los campos relacionados está activada, el cambio de un valor de clave principal en la tabla principal actualiza automáticamente el valor coincidente en todos los registros relacionados.
Cuando la casilla de verificación Eliminar en cascada los registros relacionados está activada, la eliminación de un registro en la tabla principal elimina todos los registros relacionados en la tabla relacionada.

Vínculos entre tablas es el tema de la segunda práctica de la materia.

Como Crear una Base de Datos Sencilla (incluye como construir sus tablas y relaciones):
...


....


Nomina 2010.xls

Dentista




Los diagramas de entidad-relación pueden ser convertidos en tablas. Para cada una de las entidades podemos crear una tabla en la que las columnas de la tabla son los atributos de la entidad. Podemos interconectar las tablas

TAREA: Investigar más sobre el tema de Diagramas E-R (entidad-relación).
Wikipedia    http://es.wikipedia.org/wiki/Modelo_entidad-relaci%C3%B3n
Modelo Entidad-Relación  http://www.tejedoresdelweb.com/wiki/images/c/c7/Basesdatos_teo3_modelo_er.pdf

Modelo Entidad-Relación  http://sistemas.itlp.edu.mx/tutoriales/basedat1/temas2.htm
Modelado de datos  http://ict.udlap.mx/people/carlos/is341/bases02.html

EJERCICIOS

Elaborar los diagramas entidad-relación de cada una de las siguientes bases de datos propuestas y proponga los vínculos entre tablas. Establezca cuales son las interrogantes básicas que debe responder cada una de ellas.
Llene varias tablas con datos de ejemplo, y verifique teoricamente si con la informacion disponible es factible dar respuesta a las preguntas elaboradas.

Herramienta CASE para construir modelos E-R  Software Engineering Tutor


TAREA. Conforme a su número de lista cada alumno deberá realizar el modelo E-R, proponer y construir las tablas y sus relaciones correspondientes para elaborar una base de datos del problema planteado.


1 Viaje de prácticas

Proponga las tablas y las relaciones de una base de datos que permita llevar el control de caja de las aportaciones de cada alumno para realizar un viaje de prácticas. Se requiere conocer (al menos) lo siguiente

a) Cuanto ha pagado cada alumno (dando el # de control del alumno)

b) Cuanto adeuda cada alumno, si el total a pagar es $2000

c) Cuanto ha pagado cada grupo

d) Cuanto se ha pagado en total

e) Cuanto se pago en cierta fecha (dando la fecha)

f) Cuanto se pago en un rango de fechas





2 Estacionamiento escolar

Para el control del estacionamiento escolar, se desea almacenar información sobre personas y los coches que poseen. Una misma persona puede poseer varios coches aunque puede haber personas que no posean ningún coche. Los coches se identifican mediante su número de matrícula y las personas mediante su CURP (documento nacional de identidad). Si son alumnos debe incluirse el número de control, carrera, semestre. Si son empleados el número de empleado, el departamento en que laboran y el puesto.

3 Gimnasio

Proponga las tablas y las relaciones de una base de datos que permita llevar un registro de usuarios de un gimnasio, que incluya el código de identificación de cada cliente, código de identificación, Actividad (Pesas, Karate, Tae Kwon Do, Aeróbics, etc.), Cuota (la cantidad que paga mensualmente) y Observaciones (por ejemplo si tiene algún problema médico, etc.). Agregue tablas para el control de rutinas asignadas y seguimiento de medidas corporales.

4 Control de asistencia

Proponga las tablas y las relaciones de una base de datos que permita registrar la asistencia diaria a una empresa y generar de ella la nomina semanal.

5 Facturación

Utilizando un catálogo de productos y un catálogo de clientes se capturan las facturas, las cuales son impresas y almacenadas en una tercera tabla. El sistema debe contar con una serie de reportes para conocer los importes y cantidades, facturados por periodo, por cliente o por producto.

6 Caja de cobros escolares

En una escuela, las colegiaturas, cursos de verano, titulaciones, etc. se pagan íntegramente o en parcialidades y se requiere un sistema que lleve el control de pagos. Se tiene una tabla de alumnos con número de cuenta y un catálogo de conceptos, además de la tabla principal que es la de Recibos en la que se captura el número de cuenta, el concepto e importe de cada pago. El sistema imprime estados de cuenta de cada alumno y el corte diario de caja y otros reportes.

7 Control de Activo Fijo.

El sistema conserva el registro de los activos de la empresa con fecha de adquisición y catalogados por tipo de activo, cuenta además con una tabla de depreciación por tipo de bien, de tal forma que dependiendo del tipo de activo, se calcula automáticamente el valor actualizado y depreciación, imprime el inventario y el inventario histórico. El sistema tiene además tabla de centros de costo para relacionar los activos con su correspondiente centro de costo.

8 Nomina

Se desea automatizar es una nómina de empleados donde, además de las informaciones típicas de nombre y número, participan informaciones asociadas referentes al departamento del empleado, su cargo y su salario. Estas informaciones constan en otras dos listas. Estas listas son naturalmente tabulares y su exacto contenido queda evidente a lo largo del texto.

9 Entradas y Salidas

Que permita llevar el control de entradas y salidas de caja de una empresa. También servirá para generar balances simples.

10 Chequera


Que permita controlar ingresos y egresos para varios proyectos y conocer la disponibilidad de efectivo.

11 Mantenimiento preventivo

Que permita programar oportunamente las labores de mantenimiento y la compra anticipada de las refacciones necesarias para ello.

12 Recursos Humanos

Que permita llevar un registro de empleados, salarios, puestos, departamentos en que laboran y los pagos que han recibido.


13 Catastro

Se desea almacenar información sobre personas y sus viviendas en propiedad. Supondremos que una vivienda tan solo puede pertenecer a una persona y que no toda persona debe ser obligatoriamente propietaria de al menos una vivienda.

14 Cursos y aulas

Se desea diseñar una pequeña base de datos para almacenar información relativa a los estudios universitarios de un grupo de alumnos pertenecientes al Tecnológico. Un alumno puede cursar a la vez varias asignaturas pertenecientes a cursos distintos. Cada curso se compone de una serie de asignaturas que se imparten en aulas. Las asignaturas se agrupan en áreas de conocimiento y los profesores que las imparten se agrupan en departamentos que supondremos no guardan relación con las áreas de conocimiento. No hay asignaturas sin alumnos. Todo profesor debe estar adscrito a un único departamento. Una asignatura puede ser impartida por varios profesores siempre que éstos pertenezcan al mismo departamento. Puede haber profesores que no impartan clase.

15 Pedidos

Una empresa desea almacenar información sobre sus clientes y los pedidos que éstos realizan. Un pedido consta de un número variable de artículos deseados en una determinada cantidad. La empresa guarda un determinado número de unidades de cada artículo en su almacén. Puede ser que la cantidad realmente entregada de un artículo en un pedido sea inferior a la cantidad pedida si no hay suficiente stock. Los pedidos pueden ser urgentes, en cuyo caso se especifica además un número máximo de días que el cliente está dispuesto a esperar el servicio del pedido.

16 Seguro de gastos médicos

Construir un diagrama E-R para una compañía aseguradora que vende seguros de gastos médicos mayores. Los clientes pueden tener más de una persona asegurada. También se requiere llevar el registro de las veces que ha utilizado el seguro cada uno de los asegurados como por ejemplo fecha, descripción de la enfermedad y/o accidente, procedimiento hospitalización, intervenciones, médico tratante, etc.

17 Facturas

Se tienen CLIENTES de los que se guarda un número de cliente, nombre, apellidos, lista de teléfonos, fax y correo electrónico. Los clientes realizan PEDIDOS. (Un pedido no puede ser realizado por dos clientes simultáneamente). Cada pedido tiene un número de pedido, una fecha asociada y una persona de contacto. Cada pedido aglutina varias LÍNEAS DE DETALLE, cada una con una cantidad y una referencia a un artículo. Los ARTÍCULOS tienen un descriptor, un identificador de familia y un identificador de modelo. Varias líneas de detalle correspondientes a uno o varios pedidos (bien en su totalidad, bien en parte) constituyen un RECIBO. Los recibos contienen una fecha de entrega, una dirección de entrega y el nombre y apellido del receptor. Varias líneas de detalle correspondientes a uno o varios recibos (bien en su totalidad, bien en parte) constituyen una FACTURA, la cual contiene un número de factura, una fecha de cobro y un modo de pago.

18 Microempresa

Una base de datos para una pequeña empresa debe contener información acerca de clientes, artículos y pedidos. Se contempla registrar los siguientes datos:

• Para cada cliente: Número de cliente (único), Direcciones de envío (varias por cliente), Saldo, Límite de crédito, Descuento.

• Para cada artículo: Número de artículo (único), Proveedores que lo distribuyen, Existencias de ese artículo, Descripción del artículo.

• Para cada pedido: Cada pedido tiene una cabecera y el cuerpo del pedido. La cabecera está formada por el número de cliente, dirección de envío y fecha del pedido. El cuerpo del pedido son varias líneas, en cada línea se especifican el número del artículo pedido y la cantidad.

Además, se ha determinado que se debe almacenar la información de los proveedores. Número del distribuidor (único), nombre y Teléfono de contacto.

19 Sistema de ventas.

Una empresa necesita llevar un control de proveedores, clientes, productos y ventas.

Un proveedor tiene un RFC (registro único tributario), nombre, dirección, teléfono y página web. Un cliente también tiene RFC, nombre, dirección, pero puede tener varios teléfonos de contacto. La dirección se entiende por calle, número, colonia, ciudad, C.P. y estado.

Un producto tiene un id único, nombre, precio actual, stock y nombre del proveedor. Además se organizan en categorías, y cada producto va sólo en una categoría. Una categoría tiene id, nombre y descripción.

Por razones de contabilidad, se debe registrar la información de cada venta con un id, fecha, cliente, descuento y monto final. Además se debe guardar el precio al momento de la venta, la cantidad vendida y el monto total por el producto.

20 Biblioteca

Una escuela requiere llevar el control de libros de una biblioteca. Para ello propone crear varias tablas: LIBROS, EDITORIALES, INVENTARIO, USUARIOS y PRESTAMOS. Considere que puede haber varios ejemplares de un mismo libro en inventario, que un usuario puede sacar en prestamo varios libros, que un libro puede tener uno o varios autores.


Posibles Proyectos: