Está en la página 1de 54

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

Revisó Aprobó Autorizó

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


Dr. José Manuel Lira Turriza
Salgado Ávila
Presidente de Academia
Coordinador del PE Dirección Académica
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


2 de 54

Í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


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

MANUAL DE PRÁCTICAS Página:


3 de 54

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.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


4 de 54

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.


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

MANUAL DE PRÁCTICAS Página:


5 de 54

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
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


6 de 54

- 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;


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

MANUAL DE PRÁCTICAS Página:


7 de 54

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;


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

MANUAL DE PRÁCTICAS Página:


8 de 54

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
Aspecto Peso

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


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

MANUAL DE PRÁCTICAS Página:


12 de 54

-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.


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

MANUAL DE PRÁCTICAS Página:


13 de 54

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
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


14 de 54

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"),


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

MANUAL DE PRÁCTICAS Página:


15 de 54

-> ("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.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


16 de 54

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;
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


17 de 54

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;


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

MANUAL DE PRÁCTICAS Página:


18 de 54

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


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

MANUAL DE PRÁCTICAS Página:


19 de 54

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.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


20 de 54

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


correctamente en formato APA.

CONTENIDO
Aspecto Peso

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.


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

MANUAL DE PRÁCTICAS Página:


21 de 54

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


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

MANUAL DE PRÁCTICAS Página:


22 de 54

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

En SQL
Éxito Fracaso
Begin transacction Begin transacction
Instrucción 1 Instrucción 1
Instrucción 2 Instrucción 2
... ...
Commit workEnd transacction Rollback workEnd 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
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


23 de 54

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
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


24 de 54

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


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

MANUAL DE PRÁCTICAS Página:


25 de 54

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:
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


26 de 54

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


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

MANUAL DE PRÁCTICAS Página:


27 de 54

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 |


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

MANUAL DE PRÁCTICAS Página:


28 de 54

| 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:


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

MANUAL DE PRÁCTICAS Página:


29 de 54

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);
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


30 de 54

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;
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


31 de 54

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 :


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

MANUAL DE PRÁCTICAS Página:


32 de 54

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)


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

MANUAL DE PRÁCTICAS Página:


33 de 54

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


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

MANUAL DE PRÁCTICAS Página:


34 de 54

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;
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


35 de 54

- 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
Aspecto Peso

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.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


36 de 54

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.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


37 de 54

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
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


38 de 54

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
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


39 de 54

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


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

MANUAL DE PRÁCTICAS Página:


40 de 54

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.


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

MANUAL DE PRÁCTICAS Página:


41 de 54

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


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

MANUAL DE PRÁCTICAS Página:


42 de 54

12. Crear llaves primarias para Empleado y Depto.


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

MANUAL DE PRÁCTICAS Página:


43 de 54

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.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


44 de 54

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.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


45 de 54

- 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
Aspecto Peso

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.


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

MANUAL DE PRÁCTICAS Página:


46 de 54
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


47 de 54

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


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

MANUAL DE PRÁCTICAS Página:


48 de 54

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.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


49 de 54

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.
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


50 de 54

-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
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


51 de 54

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
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


52 de 54

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:
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


53 de 54

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
Código:
Dirección Académica CPE-FO-02-03
Revisión: 1

MANUAL DE PRÁCTICAS Página:


54 de 54

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
Aspecto Peso

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