Ingeniería en Sistemas de Computación Bases de Datos II Profesor: Ing. Freisy Valverde Solís Taller Práctico Realizado por: Allen Aguilar Azofeifa Adrián Ulate Chavarría Gustavo Sánchez Delgado Ezequiel Silva Carrillo Carlos Ulate Hernández I Cuatrimestre 2007
______________________________________________________Taller Práctico MySQL Índice
1 Introducción-----------------------------------------------------------------------------------------3 2 Desarrollo--------------------------------------------------------------------------------------------4 2.1 Diagramas por cada etapa de modelamiento de la base de datos distribuida4 2.2 Diagrama de Entidad Relación........................................................................6 2.3 Diccionario de Datos........................................................................................6 2.4 Diseño de la Base de Datos Distribuida........................................................22 2.4.1 Estrategia Empleada...............................................................................23 2.4.2 Diseño de la Distribución.........................................................................23 2.4.3 Tipo de Base de Datos Distribuida..........................................................23 2.4.4 Clasificación de la Base de Datos Distribuida.........................................23 2.4.5 Tipos de Transacciones...........................................................................23 Conclusión............................................................................................................24
________________________________________________________Bases de Datos II
2
______________________________________________________Taller Práctico MySQL
1 Introducción Como ya sabemos la globalización ya no es un mito sino toda una realidad, hoy en día las medianas y grandes compañías no se encuentran ubicadas en solo lugar geográfico sino que se distribuyen en diferentes puntos cardinales y por todo el orbe. Con todo este crecimiento es necesario buscar métodos que agilicen el trato de información de una manera eficiente como si estuviera en el punto mismo donde fue generada inicialmente. Es de gran importancia para el gran gerente poder tener la información global en su pc personal y poder ver como se está moviendo su negocio en un momento dado en todo el mundo. De esta gran necesidad de control ágil de la información en puntos diferentes del globo surge el concepto sistema de bases de datos distribuida (SBDD) que es un sistema en el cual múltiples sitios de bases de datos están ligados por un sistema de comunicaciones, de tal forma que, un usuario en cualquier sitio puede acceder los datos en cualquier parte de la red exactamente como si los datos estuvieran almacenados en su propio sitio. Para explicar mejor y poder entender más ampliamente este concepto a continuación desarrollaremos un ejemplo de cómo aplicar este concepto partiendo del hecho de que tenemos oficinas ubicadas en 3 diferentes países, esperando que al finalizar el desarrollo de este trabajo el concepto de SBDD haya quedado claro y que sea de su total satisfacción lo aprendido.
________________________________________________________Bases de Datos II
3
______________________________________________________Taller Práctico MySQL
2 Desarrollo 2.1 Diagramas por cada etapa de modelamiento de la base de datos distribuida 2.1.1 Definición de Entidades CONCEPTOS
Bodega
Contabilidad
Distribución
Admin
Producción
Tecnología
Rec Humanos
Ventas
2.1.2 Atributos por entidad.
________________________________________________________Bases de Datos II
4
______________________________________________________Taller Práctico MySQL 2.1.2 Llaves Primarias y llaves Candidatas.
________________________________________________________Bases de Datos II
5
______________________________________________________Taller Práctico MySQL 2.2 Diagrama de Entidad Relación
2.3 Diccionario de Datos 2.3.1 Concepto Diccionario de Datos Un diccionario de datos contiene las características lógicas de los datos que se van a utilizar en el sistema que estamos programando, incluyendo nombre, descripción, alias, contenido y organización. Estos dicccionarios se desarrollan durante el análisis de flujo de datos y ayuda a los analistas que participan en la determinación de los requerimientos del sistema, su contenido también se emplea durante el diseño del proyecto.
________________________________________________________Bases de Datos II
6
______________________________________________________Taller Práctico MySQL
t_departamentos Atributos cod_dept
descripcion
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Integer 4 0..9999 Código del departamento correspondiente Si (Es campo llave) No Varchar 50 N/A Descripción del departamento correspondiente No Si
________________________________________________________Bases de Datos II
7
______________________________________________________Taller Práctico MySQL t_empleados Atributos cedula
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
nombre
apellidos
direccion
telefono
cod_depto
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Varchar 9 N/A Número de cedula del empleado correspondiente Si (Es campo llave) No Varchar 50 N/A Nombre del empleado correspondiente No No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Varchar 9 N/A Apellidos del empleado correspondiente No No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Varchar 50 N/A Dirección del empleado correspondiente No Si
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Character 8 N/A Telefono del empleado correspondiente No Si
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código del departamento donde labora el empleado Si (Es campo llave) No
________________________________________________________Bases de Datos II
8
______________________________________________________Taller Práctico MySQL t_asientos Atributos cod_cia
cod_sucu
cod_asiento
cod_cuenta
monto
tipo_movimiento
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Integer 4 0..9999 Código de Compañía Si (Es campo llave) No Integer 4 0..9999 Código de Sucursal Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código del asiento de diario correspondiente Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de una cuenta Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Numeric 9 0..999999999 Cantidad de dinero No No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Varchar 1 N/A Tipo de movimiento específico No No
________________________________________________________Bases de Datos II
9
______________________________________________________Taller Práctico MySQL t_catalogos Atributos cod_cia
cod_sucu
cod_cta
descripcion
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Integer 4 0..9999 Código de Compañía Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Sucursal Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de cuenta Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Varchar 50 0..9999 Descripción del catalogo correspondiente No No
________________________________________________________Bases de Datos II 10
______________________________________________________Taller Práctico MySQL t_facturacion Atributos cod_cia
cod_sucu
cod_fact
cod_art
cod_cliente
cantidad
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Integer 4 0..9999 Código de Compañía Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Sucursal Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de factura Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Artículo Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Cliente No No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Cantidad No No
________________________________________________________Bases de Datos II 11
______________________________________________________Taller Práctico MySQL Atributos precio
monto
fecha
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Money 8 0..99999999 Monto de dinero No No Money 8 0..99999999 Cantidad de dinero No No Datetime 8 N/A Fecha No No
________________________________________________________Bases de Datos II 12
______________________________________________________Taller Práctico MySQL
t_clientes Atributos cod_cia
cod_sucursal
cod_cliente
cod_zona
nombre
telefono
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Integer 4 0..9999 Código de Compañía Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Sucursal Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Cliete Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de zona No No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Varchar 50 N/A Nombre de Cliente No No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Varchar 8 N/A teléfono No Si
________________________________________________________Bases de Datos II 13
______________________________________________________Taller Práctico MySQL
Atributos email
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Varchar 30 N/A Dirección de correo electrónico No Si
t_zona Atributos cod_cia
cod_sucu
cod_zona
descripcion
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Integer 4 0..9999 Código de Compañía Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Sucursal Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de zona Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Varchar 50 0..9999 Descripción de zona No No
________________________________________________________Bases de Datos II 14
______________________________________________________Taller Práctico MySQL
t_reparto Atributos cod_cia
cod_sucu
cod_zona
num_placa
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Integer 4 0..9999 Código de compañía Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Sucursal Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Zona Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Varchar 50 N/A Número de Placa Si (Es campo llave) No
________________________________________________________Bases de Datos II 15
______________________________________________________Taller Práctico MySQL
t_vehiculo Atributos cod_cia
cod_sucu
num_placa
marca
tipo_vehiculo
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Integer 4 0..9999 Código de Compañía Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Sucursal Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Varchar 50 N/A Número de placa Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Varchar 50 N/A Nombre de marca del vehículo No Si
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Varchar 50 N/A Categoría de vehículo, camión, carro etc No Si
________________________________________________________Bases de Datos II 16
______________________________________________________Taller Práctico MySQL
t_produccion Atributos cod_cia
cod_sucu
cod_lote
cod_prod
cod_prod2
cod_maquina
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Integer 4 0..9999 Código de Compañía Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Sucursal Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Lote Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Producto No No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Si (Es campo llave) No Integer 4 0..9999 Código de máquina No No
________________________________________________________Bases de Datos II 17
______________________________________________________Taller Práctico MySQL
Atributos cantidad
estado
fecha
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Integer 4 0..9999 Cantidad No No Char 1 N/A Orden en proceso o no No No Datetime 8 N/A fecha No No
________________________________________________________Bases de Datos II 18
______________________________________________________Taller Práctico MySQL
t_tecnologia Atributos cod_cia
cod_sucu
cod_maquina
descripcion
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Integer 4 0..9999 Código de Compañía Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Sucursal Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de máquina Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Varchar 50 N/A No No
t_inventario ________________________________________________________Bases de Datos II 19
______________________________________________________Taller Práctico MySQL Atributos cod_cia
cod_sucu
cod_prod
cant
precio
costo
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Integer 4 0..9999 Código de Compañía Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de sucursal Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de producto Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Numeric 9 0..999999999 Cantidad No Si
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Numeric 9 0..999999999 Precio de venta No Si
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Numeric 9 0..999999999 Precio de costo No Si t_productos
________________________________________________________Bases de Datos II 20
______________________________________________________Taller Práctico MySQL Atributos cod_cia
cod_sucu
cod_prod
cod_bod
descripción
tipo_art
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Integer 4 0..9999 Código de Compañía Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Sucursal Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Producto Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Bodega No No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Varchar 50 N/A Descripción de Bodega No No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Varchar 2 N/A Tipo de Artículo No No t_bodega
________________________________________________________Bases de Datos II 21
______________________________________________________Taller Práctico MySQL Atributos cod_cia
cod_sucu
cod_bod
descripcion
Características Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Tipo Integer 4 0..9999 Código de Compañía Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Sucursal Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Integer 4 0..9999 Código de Bodega Si (Es campo llave) No
Tipo Dato Longitud Rango Significado Unicidad Soporte de Nulo
Varchar 50 N/A Descripción de la bodega No No
2.4 Diseño de la Base de Datos Distribuida
________________________________________________________Bases de Datos II 22
______________________________________________________Taller Práctico MySQL 2.4.1 Estrategia Empleada La estrategia que hemos empleado en nuestra solución es descendente, esto por que la empresa Electronics S.A. nos ha proporcionado los requerimientos para modelarles y diseñarles una base de datos que permita almacenar el registro diario de su operatividad en cuanto a la producción y distribución de los productos la empresa. 2.4.2 Diseño de la Distribución En el diseño de la distribución de la base de datos se utiliza fragmentación debido al alto volumen de información que maneja la empresa así como también los métodos de replicación ya que la empresa requiere un ambiente distribuido además de las grandes transacciones que se ejecutan en línea. 2.4.3 Tipo de Base de Datos Distribuida El tipo de la base de datos que manejamos es homogénea ya que cada sitio va tener el mismo Sistema Gestor de Base de Datos relacionada con la metodología de replicación que se va a utilizar. 2.4.4 Clasificación de la Base de Datos Distribuida En este aspecto la base de datos es totalmente replicada, esto con el fin de que todos los nodos tengan la garantía de la misma información de manera inmediata y también que no haya una independencia de información entre los distintos nodos. 2.4.5 Tipos de Transacciones Los tipos de transacciones que se van a utilizar son:
Globales: Son las transacciones que involucran varias tablas de otros nodos y son administrados por el SGBDD.
________________________________________________________Bases de Datos II 23
______________________________________________________Taller Práctico MySQL
Locales: Son las transacciones que involucran una o varias tablas de un nodo y son administrados por el SGBD local. Ejemplo: INSERT INTO ELEC_JP.DEPTO_JP (DEPTO_JP.JP_COD_CIA, DEPTO_JP.JP_COD_SUCURSAL, DEPTO_JP.JP_COD_DPTO, DEPTO_JP.JP_DPTO_NOMBRE) VALUES (1,1,1,’Contabilidad’);
Conclusión ________________________________________________________Bases de Datos II 24
______________________________________________________Taller Práctico MySQL Me parece que el trabajo se le pudo haber sacado un mayor provecho. Tal vez falto un poco mas de guía por parte del profesor y más motivación y entusiasmo de parte nuestra. Sin embargo creo que logramos entender el concepto sistema de bases de datos distribuida (SBDD). Es un sistema muy interesante con el cual se pueden obtener grandes resultados y muy eficientes pero como en todos también tienen sus puntos débiles que a nuestro parecer son la minoría. Por mencionar alguno al replicar por ejemplo consume bastante ancho de banda la transmisión de información de un punto a otro, pero una vez que esa información a sido replicada se obtienen resultados a la vista. Nos parece que en la actualidad es uno de los mejores métodos y uno de los más eficientes ya que este, bien que mal, me garantiza resultados excelente siempre y cuando se haga de la manera correcta.
________________________________________________________Bases de Datos II 25