Está en la página 1de 59

Código:

Dirección Académica CPE-FO-02-03


Revisión: 1

MANUAL DE PRÁCTICAS Página:


1 de
54

MANUAL DE PRÁCTICAS DE TÓPICOS BASE DE DATOS


PROGRAMA EDUCATIVO:

INGENIERÍA INFORMÁTICA

Calkiní, Campeche, agosto de 2021

Revi Apro Autorizó


só bó

Dr. Felipe Ángel Álvarez Dr. Miguel Ángel


Dr. José Manuel Lira
Salgado Cohuo Ávila
Turriza Presidente de
Coordinador del Dirección Académica
Academia
PE
ÍNDICE

CONCEPTO PÁGINAS

PRESENTACIÓN.................................................................................................................... 3

OBJETIVO GENERAL............................................................................................................ 3

SEGURIDAD........................................................................................................................... 3

PRÁCTICA NO. 1 “Diseño e implementación de una base de datos distribuida”.............5

PRÁCTICA No. 2 “Optimizar consultas sobre bases de datos distribuidas”...................13

PRÁCTICA No. 3 “Realizar transacciones sobre bases de datos”.....................................21

PRÁCTICA No. 4 “Diseño de una base de datos orientada a objetos”..............................37

PRÁCTICA No. 5 “Multibase de Datos”......................................................................................47


PRESENTACIÓN

La información ha pasado a ser considerada un recurso fundamental de toda organización. Por un lado,
encontramos que los usuarios cada vez demandan sistemas más flexibles y eficientes lo que obliga a poner
mayor atención en los datos y su estructura; por otro lado, los diseñadores de sistemas de información se han
convencido de la trascendencia que tiene la gestión de los datos para conseguir un desarrollo coherente y
eficaz de los sistemas. Esto ha hecho que las bases de datos ocupen un primer plano en el área de las
tecnologías de la información. Por ello, esta asignatura tiene las siguientes aportaciones al perfil profesional
del ingeniero informático:

 Aplica conocimientos científicos y tecnológicos en el área informática para la solución de


problemas con un enfoque multidisciplinario.
 Formula, desarrolla y gestiona el desarrollo de proyectos de software para incrementar la
competitividad en las organizaciones, considerando las normas de calidad vigentes.
 Aplica herramientas computacionales actuales y emergentes para optimizar los procesos en las
organizaciones.

 Diseña e implementa Bases de Datos para el almacenamiento, recuperación, distribución,


visualización y manejo de la información en las organizaciones.
 Se desempeña profesionalmente con ética, respetando el marco legal, la pluralidad y la
conservación del medio ambiente.
 Participa y dirige grupos de trabajo interdisciplinarios, para el desarrollo de proyectos que
requieran soluciones innovadoras basadas en tecnologías y sistemas de información.
La gestión de bases de datos ha evolucionado de ser una aplicación informática especializada a ser una parte
esencial de un entorno informático moderno y, como consecuencia, el conocimiento acerca de las nuevas
propuestas en sistemas de bases de datos se ha convertido en una parte fundamental en la enseñanza de la
informática.

El propósito de este manual es aportar al perfil del Ingeniero Informático los conceptos de las nuevas
tendencias en bases de datos, así como logro de cuatro competencias específicas dirigidas a la
comprensión de los dominios de: bases de datos distribuidas, bases de datos orientadas a objetos, sistemas
multibase de datos y seguridad en los sistemas de base de datos.
OBJETIVO GENERAL

 Conoce y utiliza sistemas de base de datos acordes a las necesidades del problema que atiende,
considerando la optimización de los recursos de datos en el tratamiento y seguridad de la
información.
SEGURIDAD

No requiere ningún tipo de seguridad especial.


PRACTICA 1.

DISEÑO E IMPLEMENTACIÓN DE UNA BASE DE DATOS DISTRIBUIDA

-INTRODUCCIÓN

Un sistema de bases de datos distribuidas es aquel en el que hay múltiples sitios de bases de datos unidos
por un sistema de comunicaciones, en forma tal que los datos en cualquier sitio son accesibles para los
usuarios de otros sitios. Normalmente, cada sitio o nodo tiene un sistema completo de procesamiento de
información, con su propia función de administración de datos, personal, usuarios, hardware y software,
inclusive una base de datos local, sistema de administración de base de datos y software de
comunicaciones. Lo mínimo que debe tener un sitio es memoria y procesador de comunicaciones. Los
sitios por lo general están separados geográficamente y están unidos por un sistema de
telecomunicaciones, aunque es posible tener un sistema distribuido y comunicado por medio de una red
de área local dentro de un solo edificio o área pequeña. Se pretende que los usuarios no necesiten conocer
la verdadera localización de los datos a que acceden, y para ellos el sistema parece ser una base de datos
local. En función de las necesidades de la organización, las bases de datos distribuidas tienen las
siguientes ventajas sobre un sistema único y centralizado que dé acceso remoto a los usuarios.

1. Autonomía local.
2. Confiabilidad mejorada.
3. Mejor disponibilidad de datos.
4. Mejor rendimiento.
5. Tiempo menor de respuesta.

-OBJETIVO (S)

Diferenciar las características de un sistema de bases de datos centralizado y uno distribuido.

-LUGAR

Aula

-SEMANA DE EJECUCIÓN

Semana 2
- MATERIAL Y EQUIPO

1. Material del Syllabus


2. Computadora con acceso a internet
3. Gestor de base de datos MySql
4. Bibliografía

-DESARROLLO DE LA PRÁCTICA

PASO 1

Configurar los equipos para el diseño de base de datos distribuidas, siguiendo el procedimiento:

1. Desactivar el Firewall de los equipos a utilizar

2. Hacer un ping desde ambos equipos


3. Activar el servicio de MySQL

Los siguientes pasos se realizan en la computadora master

4. Abrir el archivo My.ini y agregar al final el siguiente código (master)

server-id=1

log-bin=mysql-bin

5. Abrir la Línea de comandos de MySQL, para otorgar permiso al esclavo de realizar tareas en el
servidor

mysql>GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.1.74' IDENTIFIED BY '';


6. Aplicar privilegios con:

flush privileges;

7. Mostrar el estado del maestro

show master status;


8. Tener en cuenta los datos que se muestran para la próxima configuración

Los siguientes pasos se realizan en la computadora slave

9. Enseguida en el equipo esclavo se configuran las líneas siguientes en el archivo my.ini

server-id=2

log-bin=mysql-bin.000001

skip-slave-start

10. Reiniciar servicio MySql


11. Abrir la Línea De comandos del esclavo, escribir el siguiente código:

change master to

master_host=’192.168.1.71’,

master_user=’root’,

master_password=’abc’,

master_log_file=’mysql-bin.000001’,

master_log_pos=999;
12. Arrancar el servicio de esclavo

start slave;

13. Mostrar el estado

show slave status \G;

14. Checar las líneas que indican que el servicio está corriendo
Maquina master
15. Para comprobar que todo es correcto, crea una base de datos (maquina master)

CREATE DATABASE PRUEBA1;


Maquina slave

16. En el equipo esclavo escribe:

Show databases;

PASO 2

Analiza el siguiente enunciado.

Se requiere una base de datos que sirva como seguimiento de los empleados, los departamentos y los
proyectos de una empresa, con los siguientes requisitos:

 La empresa está organizada en departamentos. Cada uno tiene un nombre único, un número único y
un empleado concreto que lo administra. Se realizará un seguimiento de la fecha en que ese
empleado empezó a administrar el departamento. Un departamento puede tener varias ubicaciones.

 Un departamento controla una cierta cantidad de proyectos, cada uno de los cuales tiene un nombre
único, un número único y una sola ubicación.

 Almacenaremos el nombre, el documento nacional de identidad, la dirección, el sueldo, el sexo y la


fecha de nacimiento de cada empleado. Un empleado está asignado a un departamento, pero puede
trabajar en varios proyectos, que no están controlados necesariamente por el mismo departamento.
Se hará un seguimiento del número de horas por semana que un empleado trabaja en cada proyecto.
También se realizará el seguimiento del supervisor directo de cada empleado.

 También se desea realizar un seguimiento de las personas a cargo de cada empleado por el tema de
los seguros. Por cada persona a cargo o subordinado, se registrará su nombre de pila, sexo, fecha de
nacimiento y relación con el empleado.

Diseñar el modelo entidad-relación, a partir del siguiente enunciado (incluir en el reporte).

PASO 3
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


9 de
54

A partir del modelo entidad-relación creado, convertirlo a un modelo de tablas relacionales (Modelo
Relacional).

PASO 4

Crear el esquema de la base de datos. Crear las tablas resultantes del análisis del problema, teniendo en
cuenta la problemática asociada a la integridad referencial.

Crear base de datos

mysql> CREATE DATABASE MiEmpresa

Crear tablas

mysql> CREATE TABLE EMPLEADO (NOMBRE VARCHAR (20), APELLIDO VARCHAR(20), ID


VARCHAR(10) NOT NULL, FECNAC DATE, DIR VARCHAR(20), SEXO CHAR (1), SALARIO INT(4),
SUPERID VARCHAR(10), IDDEPTO INT(1)) ENGINE=INNODB;

mysql> CREATE TABLE DEPTO (NOMBRE VARCHAR(20), ID INT(1) NOT NULL, IDJEFE VARCHAR(10),
FEC_DIR DATE) ENGINE=INNODB;

mysql> CREATE TABLE LOCAL (ID INT(1) NOT NULL, DEP_LOCA VARCHAR(20)) ENGINE=INNODB;

mysql> CREATE TABLE TRABAJA_EN (IDPROY INT(2), IDEMP VARCHAR(10), HORAS DOUBLE(4,2))
ENGINE=INNODB;

mysql> CREATE TABLE PROYECTO (NOMBRE VARCHAR(20), ID INT(2) NOT NULL, LOCAL
VARCHAR(20), IDDEPTO INT(1)) ENGINE=INNODB;
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


10 de
54

mysql> CREATE TABLE CARGO (IDEMP VARCHAR(10) NOT NULL, NOMDEPTO VARCHAR(20), SEX
VARCHAR(1), FECNAC DATE, RELACION VARCHAR(10)) ENGINE=INNODB;

Agregar llaves primarias

mysql> ALTER TABLE EMPLEADO ADD PRIMARY KEY (ID);

mysql> ALTER TABLE DEPTO ADD PRIMARY KEY (ID);

mysql> ALTER TABLE PROYECTO ADD PRIMARY KEY(ID);

Agregar llaves foraneas

mysql> ALTER TABLE EMPLEADO ADD FOREIGN KEY (IDDEPTO) REFERENCES DEPTO (ID) ON
DELETE SET NULL ON UPDATE CASCADE, ADD FOREIGN KEY (SUPERID) REFERENCES EMPLEADO
(ID) ON DELETE SET NULL ON UPDATE CASCADE;

mysql> ALTER TABLE DEPTO ADD FOREIGN KEY (IDJEFE) REFERENCES EMPLEADO (ID) ON DELETE
SET NULL ON UPDATE CASCADE;

mysql> ALTER TABLE LOCAL ADD FOREIGN KEY (ID) REFERENCES DEPTO (ID) ON DELETE CASCADE
ON UPDATE CASCADE;

mysql> ALTER TABLE PROYECTO ADD FOREIGN KEY (IDDEPTO) REFERENCES DEPTO (ID) ON DELETE
SET NULL ON UPDATE CASCADE;
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


11 de
54
mysql> ALTER TABLE TRABAJA_EN ADD FOREIGN KEY (IDEMP) REFERENCES EMPLEADO (ID) ON
DELETE CASCADE ON UPDATE CASCADE, ADD FOREIGN KEY (IDPROY) REFERENCES PROYECTO (ID)
ON DELETE CASCADE ON UPDATE CASCADE;

mysql> ALTER TABLE CARGO ADD FOREIGN KEY (IDEMP) REFERENCES EMPLEADO (ID) ON DELETE
CASCADE ON UPDATE CASCADE;

Restriccion Unique
mysql> ALTER TABLE DEPTO ADD UNIQUE (NOMBRE);

- EVALUACIÓN Y RESULTADOS

Elaborar un reporte de práctica con la siguiente estructura.

DATOS
GENERALES
Criterio Descripción
Portada Nombre, matrícula, nombre del profesor, nombre de la asignatura, parcial,
fecha.

Bibliografía Inclusión apropiada de datos bibliográficos. Reportar todas las fuentes


correctamente en formato APA.

CONTENIDO
Aspec Pe
to so
Análisis del Problema 20

Desarrollo y resultados. 60

Comunicación oral y escrita con habilidades de investigación 10

Habilidades de Organización con uso de Tics y trabajo en equipo 10


-REFERENCIAS

De Miguel, A., & Piattini, M. (s.f.). Fundamentos y modelos de bases de datos. Alfa-Omega
Ramma.Alfa-Omega Ramma.

Korth, H. F., & Silbertchatz, A. (2010). Fundamentos de Bases de datos (5 ed.). McGraw Hill.

Post, Gerald V. (2006), “Sistemas de Administración para bases de datos”. 1ra. edición. McGrawHill. México.

Pratt Philip J., Last Mary Z. Sql. 1ra. Edición. Anaya Multimedia. España. 2009.

Ramez Elmasri. Third Edition, “Fundamentals of Database Systems”. Editorial Addison-Wesley.


PRACTICA 2.

OPTIMIZAR CONSULTAS SOBRE BASES DE DATOS DISTRIBUIDAS

-INTRODUCCIÓN

Los factores que debe considerar el diseñador de un sistema de base de datos distribuidas al elegir una
arquitectura incluyen la colocación de los datos, tipo de sistemas de comunicaciones, modelos de datos que
soporta y tipos de aplicaciones.

Difieren en la cantidad de replicación que permiten de los datos. Cada alternativa impone un tipo diferente de
sistema y utiliza procedimientos distintos de actualización y descomposición de solicitudes. Si el sistema de
comunicaciones es lento y caro de usar se favorece un almacenamiento y procesamiento locales. Un sistema
rápido y barato de comunicaciones, como una red de área local, favorece el almacenamiento y procesamiento
centralizados. Los sistemas distribuidos aceptan varios modelos de datos y lenguajes de manipulación para
ellos, igual que en los sistemas centralizados. En general, un diseñador debe evitar los modelos que usen una
recuperación de un registro a la vez, y a cambio de eso elegir aquellos que permitan operaciones a nivel de
conjunto, debido al número de mensajes que se requieren para la recuperación con navegación del
programador. Ésta es una de las razones por las que el modelo relacional es el que se usa con más frecuencia
en las bases de datos distribuidas. Al considerar los tipos de aplicaciones por realizar contra la base de datos
escogida, el diseñador necesita estimar el tamaño de ésta, número de transacciones, cantidad de datos que
requiere la transacción, complejidad de las transacciones, número de recuperaciones en relación con el
número de actualizaciones, y número de transacciones que hacen referencia a datos locales en comparación
con los remotos. Entre las alternativas están las siguientes:

 Procesamiento distribuido con el uso de una base de datos centralizada


o Sistemas cliente-servidor
o Bases de datos paralelas
o Bases de datos distribuidas.

-OBJETIVO

Realizar práctica de ejercicios atendiendo una batería de consultas y operaciones sobre la BDD elaborada
anteriormente.

-LUGAR
Aula o centro de cómputo

-SEMANA DE EJECUCIÓN

Semana 3

- MATERIAL Y EQUIPO

1. Material del Syllabus


2. Computadora con acceso a internet
3. Gestor de base de datos MySql
4. Bibliografía

-DESARROLLO DE LA PRÁCTICA

PASO 1

Ingresar datos a la base de datos con el comando INSERT

mysql> INSERT INTO EMPLEADO VALUES ("ROLAND", "RAMIREZ", 1,"1980-04-13",


"NUNKINI","M",130,1,1);

mysql> INSERT INTO EMPLEADO VALUES

-> ("LILI","RUIZ",3,"2000-12-02","CALLE 20","F",100,1,1),

-> ("KAYLA","DIAZ",4,"2000-04-03","CALLE 22","F",100,1,1),

-> ("KHALED","DIAZ",5,"2003-04-03","CALLE 15","M",120,1,1),

-> ("DORA","MENDEZ",6,"2008-05-05","CALLE 19","5",110,1,2);

mysql> INSERT INTO DEPTO VALUES ("VENTAS", 3,2,"2000-02-15");

mysql> INSERT INTO DEPTO VALUES

-> ("ALMACEN", 4,2,"2000-04-02"),


-> ("BODEGA", 5,2,"2005-06-08"),

-> ("CAJA", 6,2,"2010-07-08");

mysql> INSERT INTO LOCAL VALUES (1,"CALKINI");

mysql> INSERT INTO LOCAL VALUES (3, "ACAPULCO"),(4,"MERIDA"),(5,"MEXICO");

mysql> insert into proyecto values ("Proyecto1",1, "ACAPULCO",1),("PROYECTO2",2, "MERIDA",1),


("PROYECTO3",3,"MEXICO",2),("PROYECTO4",4,"CAMPECHE",2);

mysql> INSERT INTO TRABAJA_EN VALUES (1,1,3.5), (1,2,4),(1,3,12),(2,4,5),(3,5,20),(3,6,10.5);

mysql> INSERT INTO CARGO VALUES (1,"MIGUEL","M","1980-09-


10","CONYUGE"),(2,"JUANA","F","1978-10-23","HIJA");

PASO 2

Para actualizar datos se utiliza el comando UPDATE. UPDATE es la


instrucción SQL especializada en esta área de procesos comunes con tablas.

mysql> update empleado set dir="CALLE 10" WHERE ID = 1;

Prueba la siguiente sentencia y explica los resultados

mysql> UPDATE EMPLEADO SET ID=6 WHERE ID=10;

Observa los cambios en tablas relacionadas

PASO 3

La sentencia DELETE permite eliminar un registro de la tabla o un conjunto de registros de la


tabla.
mysql> delete from empleado where id=5; Observa

los cambios es las tablas relacionadas.

PASO 4

Crea las siguientes consultas en la base de datos MiEmpresa

Simples
mysql> SELECT * FROM EMPLEADO;

mysql> SELECT NOMBRE, FEC_DIR FROM DEPTO;

Concatenación
mysql> SELECT CONCAT (nombre, ' ', apellido) as Empleados from empleado;

Selección con condiciones especificas


mysql> select * from empleado where id = 1;

mysql> select * from empleado where sexo = 'M';

mysql> select * from empleado where sexo != 'M';

Con más de una tabla


mysql> SELECT EMPLEADO.ID, EMPLEADO.NOMBRE, APELLIDO FROM EMPLEADO, DEPTO WHERE
EMPLEADO.ID=IDJEFE AND DEPTO.NOMBRE ='SISTEMAS';

Consulta eliminando filas duplicadas.


mysql> SELECT DISTINCT IDPROY FROM TRABAJA_EN;
Consultas con valores nulos
mysql> SELECT ID, NOMBRE, APELLIDO, SUPERID FROM EMPLEADO WHERE IDDEPTO IS NULL;

mysql> SELECT ID, NOMBRE, APELLIDO, SUPERID FROM EMPLEADO WHERE IDDEPTO IS not NULL;

Test de correspondencia con patrón


mysql> SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE NOMBRE LIKE ' ';

mysql> SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE APELLIDO LIKE 'D%';

mysql> SELECT NOMBRE, APELLIDO FROM EMPLEADO WHERE NOMBRE LIKE ' ' AND
APELLIDO LIKE 'D%';

Consultas con rangos de fechas

mysql> SELECT EMPLEADO.NOMBRE, APELLIDO, FEC_DIR FROM EMPLEADO, DEPTO WHERE


IDJEFE=EMPLEADO.ID AND YEAR(FEC_DIR) BETWEEN 2000 AND 2005;

mysql> SELECT EMPLEADO.NOMBRE APELLIDO, FECNAC, (YEAR(CURRENT_DATE) - YEAR(FECNAC))-


(RIGHT(CURRENT_DATE,5)<RIGHT(FECNAC,5)) AS EDAD FROM EMPLEADO;

mysql> SELECT DEPTO.ID, NOMBRE FROM DEPTO, LOCAL WHERE DEPTO.ID= LOCAL.ID AND
DEP_LOCA='ACAPULCO';

Consulta renombrando tablas;


mysql> SELECT E.ID, E.NOMBRE, E.APELLIDO, J.ID AS IDJEFE, J.NOMBRE AS JEFE, J.APELLIDO FROM
EMPLEADO E, EMPLEADO J WHERE E.SUPERID=J.ID;

Funciones de columna
mysql> SELECT COUNT(ID) FROM EMPLEADO;

mysql> SELECT AVG (SALARIO) FROM EMPLEADO;


mysql> SELECT SUM(HORAS) FROM EMPLEADO, TRABAJA_EN WHERE IDEMP=ID AND
NOMBRE='JUAN' AND APELLIDO='PEREZ';

mysql> SELECT MAX(SALARIO), MIN(SALARIO) FROM EMPLEADO;

Ordenamiento
mysql> SELECT APELLIDO, NOMBRE FROM EMPLEADO ORDER BY APELLIDO DESC;

mysql> SELECT APELLIDO, NOMBRE FROM EMPLEADO ORDER BY APELLIDO ASC;

Consultas agrupadas
mysql> SELECT IDEMP, NOMBRE,APELLIDO, SUM(HORAS) FROM TRABAJA_EN, EMPLEADO WHERE
ID=IDEMP GROUP BY IDEMP;

Condiciones de búsqueda (Having)


mysql> SELECT NOMBRE, APELLIDO, COUNT(IDPROY) FROM EMPLEADO, TRABAJA_EN WHERE
IDEMP=ID GROUP BY ID HAVING COUNT(IDPROY)>3;

Inner Join, Left Join y Right Join

mysql> SELECT EMPLEADO.ID, EMPLEADO.NOMBRE, APELLIDO FROM EMPLEADO INNER JOIN


DEPTO ON EMPLEADO.ID=DEPTO.IDJEFE;

mysql> SELECT EMPLEADO.ID, EMPLEADO.NOMBRE, APELLIDO,FEC_DIR FROM EMPLEADO LEFT


JOIN DEPTO ON EMPLEADO.ID=DEPTO.IDJEFE;

mysql> SELECT EMPLEADO.ID, EMPLEADO.NOMBRE, APELLIDO,FEC_DIR FROM EMPLEADO RIGHT


JOIN DEPTO ON EMPLEADO.ID=DEPTO.IDJEFE;

PASO 5

Realiza las consultas:

1. Nombre de los departamentos


2. Lista de los empleados de Ventas
3. Lista de empleados que ganan más de 200
4. Lista de empleados que trabajan en el proyecto2
5. Empleados que ganan entre 100 y 150
6. Lista de id, nombre, apellido y total de horas trabajadas de todos los empleados
7. Promedio de las horas trabajadas por Juan Pérez
8. Listas empleado nacidos en mayo
9. Lista de proyectos localizados en Acapulco
10. Proyectos que pertenecen al departamento ubicado en Mérida
11. Empleados nacidos entre 1990 y 2000
12. Empleados con sueldos de 100, 110 o 120
13. Empleado cuyo nombre empiece con A
14. Empleado que ganan más de 200
15. Calcular la suma de todos los salarios, el salario promedio el máximo y el mínimo de
los empleados
16. Departamentos que tengan más de 3 empleados
17. Salario máximo y mínimo del departamento de Sistemas
18. Salario promedio de todos los departamentos
19. Contar los salarios diferentes
20. Horas trabajadas en cada proyecto
21. Lista de proyectos que supere las 5 horas
22. Listas el nombre y apellido de todos los empleados con su respectivo supervisor
23. Empleados que han trabajado menos de 10 horas
24. Empleados cuyos apellidos estén entre la letra A y la letra H
25. Cuantos empleados tiene cada departamento

- EVALUACIÓN Y RESULTADOS

DATOS
GENERALES
Criterio Descripción
Portada Nombre, matrícula, nombre del profesor, nombre de la asignatura, parcial,
fecha.
Bibliografía Inclusión apropiada de datos bibliográficos. Reportar todas las fuentes
correctamente en formato APA.

CONTENIDO
Aspec Pe
to so
Análisis del Problema 20

Desarrollo y resultados. 60

Comunicación oral y escrita con habilidades de investigación 20

Habilidades de Organización con uso de Tics y trabajo en equipo 0

Entregar en la plataforma Moodle.

-REFERENCIAS
De Miguel, A., & Piattini, M. (s.f.). Fundamentos y modelos de bases de datos. Alfa-Omega
Ramma.Alfa-Omega Ramma.

Korth, H. F., & Silbertchatz, A. (2010). Fundamentos de Bases de datos (5 ed.). McGraw Hill.

Post, Gerald V. (2006), “Sistemas de Administración para bases de datos”. 1ra. edición. McGrawHill. México.

Pratt Philip J., Last Mary Z. Sql. 1ra. Edición. Anaya Multimedia. España. 2009.

Ramez Elmasri. Third Edition, “Fundamentals of Database Systems”. Editorial Addison-Wesley.


PRACTICA 3.

REALIZAR TRANSACCIONES SOBRE BASES DE DATOS

-INTRODUCCIÓN

En el contexto de esta práctica se proporciona al estudiante el concepto de sistemas abiertos, así como la
descripción y análisis de los diferentes protocolos de comunicación que requieren las redes.

Se llama Transacción a una colección de operaciones que forman una unidad lógica de trabajo en una BD
realizada por una o más sentencias SQL estrechamente relacionadas.

Una transacción es una unidad de la ejecución de un programa que lee y escribe datos a y desde la Base de
Datos. Puede consistir en varias operaciones de acceso a la base de datos. Una Transacción está delimitada
por instrucciones de inicio transacción y fin transacción (la transacción consiste en todas las operaciones
que se ejecutan entre inicio transacción y fin transacción).

El concepto de transacción se desarrolló para atender los casos en los que el estado resultante de la base de
datos depende del éxito completo en una serie de operaciones. Este concepto vio la luz debido a que varias
operaciones sucesivas pueden modificar el resultado de operaciones anteriores. En esos casos, si alguna
operación produce un error, el estado resultante puede ser indeterminado.

Para solucionar este problema, las transacciones agrupan una serie de operaciones de manera que es posible
garantizar la integridad del resultado final. O todas las operaciones se ejecutan con éxito y se confirman (se
escriben en la base de datos), o toda la transacción se considera no realizada. La acción de cancelar una
transacción se denomina deshacer la transacción. Deshacer una transacción permite anular los cambios y
recuperar el estado de la base de datos previo a la transacción.

Por ejemplo, en una transacción bancaria automatizada, si un banco transfiere dinero desde la cuenta A a la
cuenta B, la retirada de fondos de A y el depósito en B deben producirse con éxito para procesar los fondos
correctamente, de lo contrario la transacción entera debe cancelarse.

Esquematizando el proceso de transacciones temos: O se ejecutan todas las operaciones que


componen la transacción, o no se realiza ninguna.

En SQL
Éxito Fracaso
Begin Begin
transacction transacction
Instrucción 1 Instrucción 1
Instrucción 2 Instrucción 2
... ...
Commit workEnd Rollback workEnd
transacction transacction

Propiedades de la Transacción

Una unidad lógica de trabajo debe exhibir cuatro propiedades, conocidas como propiedades ACID
(atomicidad, coherencia, aislamiento y durabilidad), para ser calificacada como transacción.

 Atomicity : Una Transacción (Tx) se ejecuta completamente ó de otra manera se eliminan los
cambios parciales realizados.

Begin Transaction - Programa - End Transaction

Responsable: El método de recuperación, de no completar todas las operaciones, devuelve la BD a su


estado anterior a empezar esa Tx(rollback).

 Coherencia: Asegura que los datos queobservamos no cambian (por otros usuarios) hasta que
acabemos la Transacción.

Después de terminar una Transacción la Base de datos no viola ninguna de sus reglas: valores
obligatorios, claves únicas,etc.

Responsable: los programadores mediante la definición adecuada de la integridad referencial: check,


triggers, primary key, foreign key,…

 Aislamiento: Los efectos de una Tx no son visibles a otros usuarios mientras no se confirmen. Una
Transacción en ejecución no puede revelar sus resultados a otras transacciones concurrentes antes de
finalizar.

Más aun, si varias transacciones, se ejecutan concurrentemente, los resultados deben ser los
mismos que si ellas se hubieran ejecutado secuencialmente. Esto se conoce como seriabilidad debido a
que su resultado es la capacidad de volver a cargar los datos iniciales y reproducir una serie de
transacciones para finalizar con los datos en el mismo estado en que estaban después de realizar
transacciones originales.

Responsable: el método de concurrencia: mecanismos, reglas, protocolos

 Durabilidad: Si el sistema falla no debe permitir que se pierdan las operaciones realizadas por Tx
ya confirmadas.

Responsable: el método o gestor de recuperación.

-OBJETIVO

Realizar práctica de ejercicios atendiendo una batería de consultas y operaciones sobre la BDD
elaborada anteriormente.

-LUGAR

Aula o centro de cómputo

-SEMANA DE EJECUCIÓN

Semana 4

- MATERIAL Y EQUIPO

 Material del Syllabus


 Computadora con acceso a internet
 MySQL

-DESARROLLO DE LA PRÁCTICA

PASO 1

Ejemplo: Concurrencia
Para este ejercicio se requiere tener abiertas dos ventanas concurrentes para la ejecución de los comandos.

1. En la ventana 1 haga los siguiente


mysql> BEGIN;

mysql> INSERT INTO EMPLEADO VALUES ("TANOS","CROC", 7,"1980-02-08","CALLE 22A", 'M',


110,1,3);

mysql> select * from empleado;

2. En la ventana 2 haga los siguiente


mysql> select * from empleado;

3. Vuelva a ventana 1
mysql> COMMIT;

4. En la ventana 2 haga los siguiente


mysql> select * from empleado;

PASO 2

Ejemplo Lecturas coherentes

1. En una ventana 1

mysql> BEGIN;

mysql> SELECT MAX(ID) FROM EMPLEADO;

2. En la ventana 2 haga lo mismo


mysql> BEGIN;

mysql> SELECT MAX(ID) FROM EMPLEADO;

3. Ahora, los dos usuarios (ventana 1 y ventana 2) agregan un nuevo registro y


confirman sus transacciones:
El resultado ventana 1
mysql> INSERT INTO EMPLEADO VALUES ("TONY","VALDEZ", 8,"1985-03-12","CALLE 11",
'M', 120,1,3);

mysql> COMMIT;

El resultado ventana 2
mysql> INSERT INTO EMPLEADO VALUES ("ANTONIO","ROBLES", 8,"1982-11-12","CALLE 12",
'M', 120,1,3);

ERROR 1062 (23000): Duplicate entry '8' for key 'PRIMARY'

4. En la ventana 2
mysql> COMMIT;

Si consulta vera que ya puede visualizar el registro insertado en la ventana 1, pero el de esta
no se insertó.

PASO 3

Ejemplo: Lectura de bloqueos para actualizaciones

1. A continuación, establezca el bloqueo de actualización como se indica en


la ventana 1:
mysql> BEGIN;

mysql> SELECT MAX(ID) FROM EMPLEADO FOR UPDATE;

mysql> INSERT INTO EMPLEADO VALUES ("CAMILA","SUAREZ", 9,"1999-01-12","CALLE 45",


'F', 100,2,3);

2. Entretanto, la ventana 2 también intenta establecer un bloqueo de actualización:

mysql> BEGIN;

mysql> SELECT MAX(ID) FROM EMPLEADO FOR UPDATE;

3. Fíjese en que no se devuelve ningún resultado. MySQL espera a que se complete la


transacción de la ventana 1. Complete la transacción en la ventana 1:
mysql> COMMIT;

4. La ventana 2 devolverá los resultados de su consulta, tras esperar a que se


complete la operación de inserción.

5. Ahora, una vez seguros de que el 9 es el último valor de la tabla, podemos


agregar el 10 la ventana 2:
mysql> INSERT INTO EMPLEADO VALUES ("RENATA","CASTRO", 10,"1979-03-06","CALLE 13",
'F', 110,2,3);

mysql> COMMIT;

PASO 4

Ejemplo: Bloqueos de lectura en modo compartido


Existe otro tipo de bloqueo de lectura que no devuelve un valor si el valor que está leyendo ha sido
modificado por otra transacción incompleta. Devuelve el ultimo valor, pero no forma parte de una transacción
cuya intención es modificar el valor.

1. Por ejemplo, una transacción comienza en la ventana 1:

mysql> BEGIN;

mysql> INSERT INTO EMPLEADO VALUES ("YUYI","SUAREZ", 11,"1978-01-12","CALLE 45", 'F',


100,2,3);

mysql> UPDATE EMPLEADO SET NOMBRE = "YULI" WHERE ID =11;

Si realiza una consulta normal de selección en la ventana 2, no recuperaremos el ultimo valor (porque la
transacción anterior no se ha completado y la tabla InnoDB realiza una lectura coherente como parte de su
comportamiento predeterminado).

Sin embargo, si realiza una consulta con un bloqueo en modo compartido, no obtendrá un resultado hasta que
se complete la transacción en la ventana 1.

2. Si ejecutamos una consulta normal en la ventana 2, se recuperarán los siguientes


resultados:

mysql> SELECT * FROM EMPLEADO;

+ + + + + + + + + +

| NOMBRE | APELLIDO | ID | FECNAC | DIR | SEXO | SALARIO | SUPERID | IDDEPTO |

+ + + + + + + + + +

| JUAN | PEREZ | 1 | 1990-01-02 | CALLE 10 | M | 100 | 1 | NULL |

| RENATA | CASTRO | 10 | 1979-03-06 | CALLE 13 | F | 110 | 2 | 3|

| ROLAND | RAMIREZ | 2 | 1980-04-13 | NUNKINI | M | 130 | 2 | 2|

| LILI | RUIZ | 3 | 2000-12-02 | CALLE 20 | F | 100 | 1 | 1|

| KAYLA | DIAZ | 4 | 2000-04-03 | CALLE 22 | F | 100 | 1 | 1|

| KHALED | DIAZ | 5 | 2003-04-03 | CALLE 15 | M | 120 | 1 | 1|

| xx | NULL | 6 | NULL | NULL | NULL | NULL | NULL | NULL |


| TANOS | CROC | 7 | 1980-02-08 | CALLE 22A | M | 110 | 1 | 3|

| TONY | VALDEZ | 8 | 1985-03-12 | CALLE 11 | M | 120 | 1 | 3|

| CAMILA | SUAREZ | 9 | 1999-01-12 | CALLE 45 | F | 100 | 2 | 3|

+ + + + + + + + +

Todavía en la ventana 2, si realiza la misma consulta en modo de bloqueo de uso compartido no se generará
ningún resultado:

mysql> SELECT * FROM EMPLEADO LOCK IN SHARE MODE;

3. Complete la transacción en la ventana 1


mysql> COMMIT;

4. A continuación, la ventana 2 devolverá el resultado correcto

PASO 5

Ejemplo Confirmaciones automáticas

De manera predeterminada, y a menos que se especifique una transacción con BEGIN, MySQL confirma
automáticamente las instrucciones.

1. Realice una consulta en la ventana 1

2. Inserte un registro en la ventana 2

3. Vuelva a realizar la consulta en la ventana 1. Esta inmediatamente disponible en


la ventana 1

Sin embargo, en las tablas de transacción segura (InnoDB, DBD), puede cambiar este comportamiento
asignando 0 a AUTOCOMMIT.

4. Realice dicha operación en la ventana 1:


mysql> SET AUTOCOMMIT=0;

5. A continuación, ejecute la consulta en la ventana 2

6. Seguidamente, inserte un registro en la ventana 1

En esta ocasión, no está inmediatamente disponible en la ventana 2. Como no se ha desactivado la función de


confirmación automática, la operación de inserción de la ventana 1 no se confirmará hasta que se ejecute un
comando COMMIT de manera predeterminada.

7. Confirme la transacción desde la ventana 1:


mysql>COMMIT;

Ahora el nuevo registro está disponible en la ventana 2.

Sin embargo, la secuencia AUTOCOMMIT=0 no se aplica a todo el servidor, sino solo a la sesión especifica.
Si se asigna el valor 0 al comando AUTOCOMMIT en la ventana 2, el comportamiento será diferente.

8. Establezca AUTOCOMMIT en la ventana 1 y en la ventana 2:


mysql> SET AUTOCOMMIT=0;

9. A continuación, ejecute la siguiente secuencia en la ventana 1 para comprobar


sus elementos presentes:

mysql> SELECT * FROM EMPLEADO;

10. Agregue un registro en la ventana 2 y confirme la transacción:

mysql> INSERT INTO EMPLEADO VALUES ("MANUEL","CAMACH0", 15,"1977-01-01","CALLE


11", 'M', 120,2,3);
Query OK, 1 row affected (0.05 sec)

mysql> COMMIT;

11. A continuación, compruebe si aparece en la ventana 1

mysql> SELECT * FROM EMPLEADO;

El nuevo registro no aparece, aunque hayamos confirmado los resultados. La razón es que la instrucción de
selección de la ventana 1 forma también parte de una transacción. A la lectura coherente se le ha asignado un
punto temporal y este punto temporal avanza si la transacción en la que se estableció se ha completado.

12. Confirme la transacción en la ventana 1:


mysql> COMMIT;

Ejemplo: Bloqueo de tabla

Existen dos tipos de bloqueos de tabla: los bloqueos de lectura y los bloqueos de escritura. Los bloqueos de
lectura solo permiten realizar lecturas sobre la tabla, quedando bloqueadas las operaciones de escritura. Los
bloqueos de escritura impiden la realización de operaciones de lectura o escritura sobre la tabla durante el
bloqueo. La sintaxis para bloquear una tabla es la siguiente: LOCK TABLE nombre-de-tabla
(READ/WRITE)

Para desbloquear una tabla, basta con utilizar la instrucción UNLOCK TABLE de la siguiente forma:

UNLOCK TABLES

1. Bloquee la tabla desde la ventana 1:


mysql> LOCK TABLE EMPLEADO READ;
2. Se pueden leer otros subprocesos, pero no se pueden escribir, como puede
observar si prueba a utilizar el siguiente comando en la ventana 2:

mysql> SELECT * FROM EMPLEADO;

mysql> INSERT INTO EMPLEADO VALUES ("ALONDRA","MINCE", 16,"1979-07-05","CALLE


11", 'F', 110,2,3);

3. La instrucción INSERT no se procesa hasta que el bloqueo se libera en la ventana 1:

mysql> UNLOCK TABLES;

También puede bloquear más de una tabla a la vez.

4. Aplique los siguientes bloqueos desde la ventana 1:

mysql> LOCK TABLE EMPLEADO READ, DEPTO WRITE;

Otros subprocesos pueden leer la tabla EMPLEADO, pero no la tabla DEPTO.

5. Intente ejecutar una instrucción SELECT desde la ventana 2:

mysql> SELECT * FROM EMPLEADO;

Si el subproceso que creo el bloqueo intenta agregar un registro a la tabla EMPLEADO, fallara. No esperara a
que el bloqueo se libere (como se creó el bloqueo, si se suspende, no volverá a poder liberarlo nunca); en su
lugar la operación de inserción simplemente fallara.

6. Pruebe la siguiente instrucción en la ventana 1 :


mysql> INSERT INTO EMPLEADO VALUES ("ROSA","VERDE", 17,"1979-01-12","CALLE 45", 'F',
130,1,3);

ERROR 1099 (HY000): Table 'EMPLEADO' was locked with a READ lock and can't be
updated

7. Sin embargo, puede realizar lecturas sobre la tabla cuya escritura bloqueo, de
la siguiente forma, desde la ventana 1 :

mysql> SELECT * FROM EMPLEADO;

8. En la ventana 2

mysql> UNLOCK TABLES ;

9. Aplique un bloqueo de escritura desde la ventana 1:

mysql> LOCK TABLE EMPLEADO WRITE;

Query OK, 0 rows affected (0.00 sec)

10. Ahora, intente aplicar un bloqueo de lectura desde la ventana 2:

mysql> LOCK TABLE EMPLEADO READ;

11. Intente aplicar otro bloqueo de escritura desde una tercera ventana:
mysql> LOCK TABLE EMPLEADO WRITE;

12. A continuación, libere el bloqueo desde la ventana 1:


mysql> UNLOCK TABLES;

Query OK, 0 rows affected (0.00 sec)


Ahora se obtiene el bloqueo de escritura de la ventana 3, aunque fue solicitado tras el bloqueo de lectura, de
la siguiente forma (no es necesario volver a escribir instrucción LOCK):

mysql> LOCK TABLE EMPLEADO WRITE;

Query OK, 0 rows affected (33.93 sec)

mysql> UNLOCK TABLES;

Query OK, 0 rows affected (0.00 sec)

Solo cuando se libera el bloqueo de escritura de la ventana 3 se puede obtener el bloqueo de escritura de
la ventana 2 (no es necesario volver a escribirlo):

mysql> LOCK TABLE EMPLEADO READ;

Q u e r y OK, 0 rows a f f e c t e d ( 4 min 2 . 4 6

sec) mysql> UNLOCK TABLES;

Q u e r y OK, 0 r o w s affected ( 0 . 0 0 sec)

Puede variar este comportamiento especificando una prioridad inferior para el bloqueo de escritura, mediante
la palabra clave LOW PRIORITY.
Si vuelve a ejecutar el ejemplo anterior con una solicitud de prioridad baja para un bloqueo de escritura,
se obtendrá primero el bloqueo de lectura anterior.

mysql> LOCK TABLE EMPLEADO LOW-PRIORITY WRITE;

Ejemplo: Transacciones con START TRANSACTION


1. Realiza la siguiente transacción
mysql> START TRANSACTION;

Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @S:=(salario) FROM EMPLEADO WHERE ID='1';

+ +
| @S:=(salario) |
+ +
| 200 |
+ +
1 row in set (0.09 sec)

mysql> UPDATE EMPLEADO SET SALARIO=@S WHERE ID='2';

Query OK, 1 row affected (0.09 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> COMMIT;

Query OK, 0 rows affected (0.05 sec)

2. Realiza la siguiente transacción

mysql> START TRANSACTION;

mysql> SELECT @S:=(salario) FROM EMPLEADO WHERE ID='1';

mysql> UPDATE EMPLEADO SET SALARIO=@S+10 WHERE IDDEPTO='1';

mysql> COMMIT;
- EVALUACIÓN Y RESULTADOS

Elaborar un reporte de práctica con la siguiente estructura.

DATOS
GENERALES
Criterio Descripción
Portada Nombre, matrícula, nombre del profesor, nombre de la asignatura, parcial,
fecha.

Bibliografía Inclusión apropiada de datos bibliográficos. Reportar todas las fuentes


correctamente en formato APA.

CONTENIDO
Aspec Pe
to so
Análisis del Problema 20

Desarrollo y resultados. 60

Comunicación oral y escrita con habilidades de investigación 20

Habilidades de Organización con uso de Tics y trabajo en equipo 0

Entregar impreso y en la plataforma Moodle

-REFERENCIAS

Aguilera L.(2010). Seguridad Informática, Madrid, Editorial Editex, S.A.

De Miguel, A., & Piattini, M. (s.f.). Fundamentos y modelos de bases de datos. Alfa-Omega
Ramma.Alfa-Omega Ramma.

Groff, Jaes R. ; N. Weinberg, Paul. (2011) Manual de referencia SQL. Ed. McGraw Hill.
Malware - Ataque a la Base de Datos. Recuperado a partir de http://ataquebd.blogspot.mx/ Korth, H. F., &

Silbertchatz, A. (2010). Fundamentos de Bases de datos (5 ed.). McGraw Hill. Pratt Philip J., Last

Mary Z. Sql. 1ra. Edición. Anaya Multimedia. España. 2009.

Catherine M. Ricardo, Iona College. “Database Illuminated”. Editorial Jones and Bartlett Publishers.
PRACTICA 4.

DISEÑO DE UNA BASE DE DATOS ORIENTADA A OBJETOS

-INTRODUCCIÓN

Una base de datos orientada a objetos es una base de datos donde los elementos son objetos. Estos pueden ser
bases de datos multimedia (videos, imágenes y sonidos), donde la herencia nos permita una mejor
representación de la información, estas bases de datos tienen una identidad de ser un Todo, y no solo una
parte de una gran base, por ejemplo una base de secuencias de ADN.

El objetivo de una base de datos orientada a objetos son los mismos que los de las bases de datos
tradicionales, pero con la ventaja de representar las modelos de datos con un marco mucho más eficiente,
manteniendo la integridad y relación entre ellos.}

Recordemos que un objeto es una estructura que tiene asociado un estado y un


comportamiento (propiedades y métodos). Estas bases tienen las características de todo lo que es orientado a
objeto que son Herencia, Polimorfismo, Abstracción y Encapsulamiento.

Un objeto puede heredar comportamiento de otro tipo de objetos (herencia) y puede adaptarse para responder
de diferentes maneras ante la solicitud de una acción (polimorfismo), lo importante es que permite representar
cosas de la vida real con relativa facilidad (abstracción) y que todo esto se puede implementar de manera que
no nos importe el código, sino sólo la manera de comunicarnos con estos objetos pensando en ellos como una
sola unidad (encapsulamiento).

Las bases de datos orientados a objetos han adoptado muchos de los objetos creados para los lenguajes de
programación orientados a objetos.

La utilización de una BDOO simplifica la conceptualización ya que la utilización de objetos permite


representar de una manera más natural la información que se quiere guardar.

Para modelar la estructura o vista lógica de la BD, se utiliza el Diagrama de clases que permite presentar las
clases con sus respectivas relaciones estructurales y de herencia, además del Diagrama de Objetos cuando no
está muy claro y preciso cómo serían las instancias de las clases o para especificar más el Diagrama de
Clases.

Para modelar la parte dinámica, la interacción y comportamiento entre los objetos, se emplearía el Diagrama
de Secuencia para presentar las interacciones entre los objetos organizados en una secuencia temporal y
describir como estos objetos colaboran; así como también, el Diagrama de
Estado para mostrar los posibles estados en que puede encontrarse un objeto y las transacciones que pueden
causar un cambio de estado, luego que ocurre un evento.

En general, cada objeto está asociado con:

Un conjunto de variables que contiene los datos del objeto; las variables corresponden con los atributos del
modelo E-R.
Un conjunto de mensajes a los que responde; cada mensaje puede o no tener parámetros o tener uno o varios.

Un conjunto de métodos, cada uno de los cuales es el código que implementa un mensaje; el método
devuelve un valor como respuesta al mensaje.
Además tienen un Nombre, Tiempo de vida pueden ser transitorios o persistentes, estado y comportamiento.

Características de Base de Datos Orientada a Objetos

Mandatorias: son las que el Sistema debe satisfacer a orden de tener un sistema de BDOO y estos son:
Objetos complejos, Identidad de Objetos, Encapsulación, Tipos o clases, Sobre paso con unión retardada,
Extensibilidad, Completación Computacional, Persistencia y Manejador de almacenamiento
secundario, Concurrencia, Recuperación y Facilidad de Query

Opcional: Son las que pueden ser añadidas para hacer el sistema mejor pero que no son Mandatorias, estas
son de: herencia múltiple, chequeo de tipos e inferencia d e distribución y diseño de
transacciones y versiones.

Abiertas: Son los puntos donde el diseñador puede hacer un número de opciones y estas son el
paradigma de la programación, la representación del sistema ó el tipo de sistema y su uniformidad. Hemos
tomado una posición no muy a la expectativa para tener una palabra final más bien para proveer un punto de
orientación para un debate futuro.

La clave que posee la BDOO es el poder que confieren al diseñador para especificar tanto la estructura de
objetos complejos como las operaciones que se pueden aplicar a esos objetos.
Está su flexibilidad, y soporte para el manejo de tipos de datos complejos. Ya que puedo tener clases y
subclases creadas por ejemplo una base de clientes puede tener una subclase de la referencia de este cliente y
esta heredara todos sus atributos y característica de la clase original.

La segunda ventaja de una BDOO, es que manipula datos complejos en forma rápida y ágilmente. La
estructura de la base de datos está dada por referencias (o apuntadores lógicos) entre objetos.

Desventajas
Al considerar la adopción de la tecnología orientada a objetos, la inmadurez del mercado de BDOO constituye
una posible fuente de problemas. Hay muy pocos manejadores de base de datos en el mercado que soporten
este tipo de arquitectura Algunos de los pocos oodbms que existen son:

• Db4o
• Informix
• Bdoviedo3

Quizá esta sea una de las causas por las cuales las OODB aún no tengan ese crecimiento que en algún
momento tantas expectativas generaron.

El segundo problema es la falta de estándares en la industria orientadas a objetos

-OBJETIVO

 Distinguir las características de una base de datos orientada a objetos.


 Diseñar BDOO.
 Elaborar consultas y operaciones sobre una BDOO.

-LUGAR

Aula o centro de cómputo

-SEMANA DE EJECUCIÓN

Semana 5

- MATERIAL Y EQUIPO

1. Material del Syllabus


2. Computadora con acceso a internet
3. Gestor de base de datos Oracle
4. Bibliografía

-DESARROLLO DE LA PRÁCTICA

PASO 1

Instalar Oracle 11g y SQLDeveloper


1. Extraer el archivo comprimido OracleXE112_Win64 y comenzar la instalación abriendo
la carpeta Disk 1, dando clic en Setup.exe

2. Extraer los archivos de sqldeveloper-17.3.1.279.0537-x64

3. Cambiar el nombre a la carpeta que se extrajo por SQL Developer y mover a Archivos
de programas.

4. Crear acceso directo

5. Abrir Servicios y habilitar los servicios de Oracle

6. Abrir el programa SQL Developer, en caso de salir en mensaje de la imagen, dar clic en NO.

PASO 2

Crear una conexión para crear la base de datos Empresa

7. Una vez abierto el programa dar clic en el botón Crear una conexión.

8. Escribir un nombre para conexión, el usuario system y la contreseña.


9. Clic en Conectar para continuar con la creación del diseño físico.

10. Crear el objeto Empleado


Seleccione y Clic aquí

11. Crear el objeto Depto, Proyecto y Cargo


12. Crear llaves primarias para Empleado y Depto.
13. Modificamos la tabla Empleado para agregar la llave foránea idDepto.

14. Crear las tablas Proyecto y Cargo

15. Crear la tabla trabaja_en, que viene de una relación varios a varios.
16. Crear la tabla tabLocal_D

PASO 3

Crear una conexión para crear la base de datos con la siguiente problemática

La liga de fútbol “Calkiní” ha decidido informatizar sus procesos creando una base de datos para guardar la
información de los partidos que se juegan en la liga.

En primer lugar, se desea guardar en los datos de los jugadores. De cada jugador se quiere guardar el nombre,
fecha de nacimiento y posición en la que juega (portero, defensa, delantero…). Cada jugador tiene un código
de jugador que lo identifica de manera única.

De cada uno de los equipos de la liga es necesario registrar el nombre del equipo, el año de fundación del
equipo y la colonia de la que es el equipo. Cada equipo también tiene un código que lo identifica de manera
única. Un jugador solo puede pertenecer a un único equipo.

De cada partido que los equipos de la liga juegan hay que registrar la fecha en la que se juega el partido, los
goles que ha metido el equipo de casa y los goles que ha metido el equipo de fuera. Cada partido tendrá un
código numérico para identificar el partido. Se debe tomar en cuenta que un equipo puede jugar varios
partidos, pero un partido solo puede tener a un equipo “x” solo una vez.

Por último, se quiere almacenar, en la base de datos, los datos de los presidentes de los equipos de fútbol (Id,
nombre, apellidos, fecha de nacimiento, equipo del que es presidente y año en el que fue elegido presidente).
Un equipo de fútbol tan sólo puede tener un presidente, y una persona sólo puede ser presidente de un equipo
de la liga.
- EVALUACIÓN Y RESULTADOS

DATOS
GENERALES
Criterio Descripción
Portada Nombre, matrícula, nombre del profesor, nombre de la asignatura, parcial,
fecha.

Bibliografía Inclusión apropiada de datos bibliográficos. Reportar todas las fuentes


correctamente en formato APA.

CONTENIDO
Aspec Pe
to so
Análisis del Problema 20

Desarrollo y resultados. 60

Comunicación oral y escrita con habilidades de investigación 20

Habilidades de Organización con uso de Tics y trabajo en equipo 0

Entregar en la plataforma Moodle.

-REFERENCIAS
De Miguel, A., & Piattini, M. (s.f.). Fundamentos y modelos de bases de datos. Alfa-Omega
Ramma.Alfa-Omega Ramma.

Korth, H. F., & Silbertchatz, A. (2010). Fundamentos de Bases de datos (5 ed.). McGraw Hill.

Post, Gerald V. (2006), “Sistemas de Administración para bases de datos”. 1ra. edición. McGrawHill. México.

Pratt Philip J., Last Mary Z. Sql. 1ra. Edición. Anaya Multimedia. España. 2009.

Ramez Elmasri. Third Edition, “Fundamentals of Database Systems”. Editorial Addison-Wesley.


PRACTICA 5.

MULTIBASE DE DATOS

-INTRODUCCIÓN

Un sistema multibase de datos (SMulBD) soporta operaciones en múltiples sistemas de base de datos
componentes (SBDC).
Cada SBDC es manejado por un sistema manejador de base de datos (SMBD).

Un SMulBD es llamado homogéneo si todos los SMBD componentes son iguales; si son diferentes entonces es
llamado un SMulBD heterogéneo.

Un SMulBD puede ser clasificado en dos tipos basados en la autonomía de SBDC’s:

• sistemas de base de datos no-federada


• sistemas de bases de datos federada.
• La autonomía se refiere a que los SBD estaban normalmente controlados de forma separada e
independiente.

La autonomía de cada componente puede ser de:

 Diseño
 Comunicaciones
 Ejecución
 Asociación

Base de Datos Federada

Un sistema de bases de datos federadas es una colección de sistemas de bases de datos


cooperativos y autónomos.

• Acceso a los datos,  interfaz común

• No existe un esquema global

• Hay varios esquemas unificados


Características

• Autonomía y heterogeneidad

• El sistema es distribuido

• No hay un esquema conceptual global único, común a toda la federación

• Las federaciones pueden formarse y desaparecer

• Sistemas de bases de datos pueden entrar y salir de una federación

• Un sistema componente puede ser distribuido o a su vez otro SBDF

• Un sistema de base de datos puede ser componente de varias federaciones al mismo tiempo.
Base de Datos no Federada

Un sistema de base de datos no federado es una integración de SMBDs componentes que no son autónomos.

• Pierden su autonomía

• Cualquier operación debe hacerse sobre la base de datos global

• No distingue entre usuarios locales y usuarios no-locales.

Un tipo particular de sistema de base de datos no-federado en el cual todas las bases están completamente
integradas para proveer un esquema global simple puede ser llamado SMulBD unificado. Esto lógicamente
parece a los usuarios como un sistema de base de datos distribuida.
-OBJETIVO

 Diferenciar las características de un sistema de bases de datos distribuido y un sistema multibases de


datos.
 Elaborar consultas y operaciones sobre un sistema multibases de datos

-LUGAR

Aula o centro de cómputo

-SEMANA DE EJECUCIÓN

Semana 11

- MATERIAL Y EQUIPO

1. Material del Syllabus


2. Computadora con acceso a internet
3. Gestor de base de datos MySQL
4. Bibliografía

-DESARROLLO DE LA PRÁCTICA

PASO 1

Configuración IP y nombres de dominio

1. Hacemos ping por medio de la ip


2. Abra en la máquina que va funcionar como servidor el archivo hosts que se encuentra
en C:\Windows\System32\drivers\etc y agregue la dirección de la maquina local,
ejemplo:

192.168.1.72 local.com

3. Realice lo mismo en la maquina local, agregando la dirección del servidor y su nombre


de dominio, ejemplo:

192.168.1.74 servidor1.remoto.com

PASO 2
Configurara Mysql para que sea federada

1. Abrir el archivo my.ini y agregar el comando:

federated

2. Guardar los cambios


3. Reiniciar los servicios
4. Comprobar si ya están aplicados los cambios, abrir la consola Mysql y escribir el comando

show engines \G

PASO 3

Creación de usuarios con privilegios

1. Crear el usuario en el servidor con el comando:

CREATE USER 'userP5'@local.com identified by 'u123';

2. Crear una base de datos


CREATE DATABASE Tienda;

3. Asignar privilegios al usuario creado

GRANT SELECT, INSERT, UPDATE, DELETE ON TIENDA.* TO 'userP5'@'local.com';

4. Verificar que se aplican los privilegios

SHOW GRANTS FOR 'userP5'@'local.com';

PASO 4

Comprobar conectividad de usuario

1. En la maquina local abrir la línea de comandos de Windows (cmd).


2. Abrir la dirección donde se encuentra el ejecutable de mysql

C:\wamp64\bin\mysql\mysql5.7.19\bin
3. Enseguida conectar con el usuario userP5:

mysql -h servidor1.remoto.com -u userP5 -p

4. Escribir la contraseña (u123)

5. Mostrar las bases de datos

SHOW DATABASES;

6. Poner en uso la base de datos Tienda;

USE TIENDA

7. Mostra las tablas

SHOW TABLES;

PASO 5

Crear tabla remota

1. En el servidor crear una tabla en la base de datos Tienda:

CREATE TABLE CLIENTES (IDCLIENTE INT AUTO_INCREMENT PRIMARY KEY, NOMBRE


VARCHAR(30), APPAT VARCHAR(30), APMAT VARCHAR(30), FECNAC DATE, SEXO CHAR(1));

2. En la maquina local verificar que ya existe una tabla con el comando SHOW.

3. En la maquina local, insertar un registro en la tabla clientes, para comprobar que


realimente tiene privilegios de inserción.

PASO 6

Crear tabla federada

1. En la maquina local, abrir la línea de comando de Windows, con el usuario root y crear
una base de datos que va ser la federada:
CREATE DATABASE FED_TIENDA;

2. Crear una tabla con la misma estructura de la tabla Clientes del servidor remoto

CREATE TABLE f_Clientes (IDCLIENTE INT AUTO_INCREMENT PRIMARY KEY, NOMBRE


VARCHAR(30), APMAT VARCHAR(30), APPAT VARCHAR (30), FECNAC DATE, SEXO CHAR(1))
ENGINE=FEDERATED ->
CONNECTION='mysql://userP5:u123@servidor1.remoto.com/Tienda/Clientes';

3. Comprobar si tabla esta federada, en la maquina local, haciendo una consulta en f_clientes;

SELECT * FROM F_CLIENTES;

4. Otra forma de comprobar es deteniendo el servicio de mysql en el servidor remoto.


5. Hacer nuevamente en la maquina local una consulta, veras un mensaje como este:
ERROR 1430 (HY000): : 2003 : Can't connect to MySQL server on 'servidor1.remoto.com' (10060)

6. Una vez comprobado, volver a iniciar servicios.

7. Crear un registro desde la maquina local, en la tabla federada.

INSERT INTO F_CLIENTES (NOMBRE,APMAT,APPAT,FECNAC,SEXO) VALUES ('SUSY',


'LOPEZ','TORRES','1979-04-03','F');

8. Comprobar que existe el registro en ambas maquinas.

PASO 7

Realiza el mismo procedimiento para tener una tabla federada de la base de datos “Liga de futbol” (ver
problemática en la “Práctica 4”)

- EVALUACIÓN Y RESULTADOS
DATOS
GENERALES
Criterio Descripción
Portada Nombre, matrícula, nombre del profesor, nombre de la asignatura, parcial,
fecha.

Bibliografía Inclusión apropiada de datos bibliográficos. Reportar todas las fuentes


correctamente en formato APA.

CONTENIDO
Aspec Pe
to so
Análisis del Problema 20

Desarrollo y resultados. 60

Comunicación oral y escrita con habilidades de investigación 20

Habilidades de Organización con uso de Tics y trabajo en equipo 0

Entregar en la plataforma Moodle.

-REFERENCIAS
De Miguel, A., & Piattini, M. (s.f.). Fundamentos y modelos de bases de datos. Alfa-Omega
Ramma.Alfa-Omega Ramma.

Korth, H. F., & Silbertchatz, A. (2010). Fundamentos de Bases de datos (5 ed.). McGraw Hill.

Post, Gerald V. (2006), “Sistemas de Administración para bases de datos”. 1ra. edición. McGrawHill. México.

Pratt Philip J., Last Mary Z. Sql. 1ra. Edición. Anaya Multimedia. España. 2009.

Ramez Elmasri. Third Edition, “Fundamentals of Database Systems”. Editorial Addison-Wesley.

También podría gustarte