Logo Studenta

9Equipo-8Práctica - Jorge González

¡Este material tiene más páginas!

Vista previa del material en texto

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
FACULTAD DE INGENIERÍA
Lab. de Bases de Datos
Grupo: 07 - Semestre: 2022-1
Práctica 8:
Lenguaje de Manipulación de Datos y Transacciones
FECHA DE ENTREGA: 03/11/2021
Profesor:
López Pelcastre Martha M.I
Alumno:
N.L: 26 Téllez González Jorge Luis
N.L: 23 Solano González Felipe de Jesús
Facultad de Ingenierı́a Lab. de Bases de Datos
Índice
1. Objetivo 3
2. Introducción 3
3. Desarrollo 6
3.1. Requerimientos implementados sobre la BD . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2. Inserciones de renglones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2.1. Con encabezados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2.2. Sin encabezados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3. Inserción con transacciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.4. Actualizar columnas con UPDATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.4.1. Actualizar 1 columna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.4.2. Actualizar 2 columnas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.5. Eliminación de registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.5.1. Usando DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.5.2. Usando TRUNCATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.6. Eliminar un renglón usando una condición . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.7. Comportamiento transaccional con COMMIT, ROLLBACK y SAVE . . . . . . . . . . . . 18
3.8. Poblado de tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.8.1. Segunda ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4. Conclusiones 26
LATEX
2
Facultad de Ingenierı́a Lab. de Bases de Datos
1. Objetivo
El alumno comprenderá y confirmará el uso del lenguaje SQL para realizar la administración de los
datos empleando las instrucciones INSERT, UPDATE y DELETE.
Comprenderá las principales caracterı́sticas de una transacción, comprobará y configurará los dife-
rentes niveles de aislamiento empleados por un RDBMS.
2. Introducción
DML (Lenguaje de manipulación de datos)
Lenguaje de Manipulación de Datos (Data Manipulation Language, DML) es un lenguaje
proporcionado por los sistemas gestores de bases de datos que permite a los usuarios de
la misma llevar a cabo las tareas de consulta o modificación de los datos contenidos en
las Bases de Datos del Sistema Gestor de Bases de Datos.
El lenguaje de manipulación de datos más popular hoy en dı́a es SQL, usado para
recuperar y manipular datos en una base de datos relacional. Otros ejemplos de DML son
los usados por bases de datos IMS/DL1, CODASYL u otras.
Utilizando instrucciones de SQL, permite a los usuarios introducir datos para poste-
riormente realizar tareas de consultas o modificación de los datos que contienen las Bases
de Datos.
Clasificación de los DML
Lenguajes de consulta procedimentales
En este tipo de lenguaje el usuario da instrucciones al sistema para que realice una
serie de procedimientos u operaciones en la base de datos para calcular un resultado
final.
Lenguajes de consulta no procedimentales
En los lenguajes no procedimentales el usuario describe la información deseada sin
un procedimiento especı́fico para obtener esa información.
LATEX
3
Facultad de Ingenierı́a Lab. de Bases de Datos
Sentencias básicas
La sentencias básicas utilizadas para la manipulación de datos son la siguientes:
INSERT — INSERTAR
Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla
en una base de datos relacional. Existen de manera genral dos formas para ingresar
datos a una tabla. Con encabezados y sin encabezados.
Con encabezados
INSERT INTO ’nombre_tabla’ (’columna1’,[’columna2,... ’])
VALUES (’valor1’, [’valor2,...’])
Como se observa, cada valor se asocia a un nombre de columna, es decir que depende
del orden de los encabezados.
Sin encabezados
INSERT INTO tabla VALUES (’valor1’,’valor2’)
Para este caso no se da el nombre de las columnas, y los valores son insertados en el
orden de como fueron creados los atributos
UPDATE — ACTUALIZAR
Como su nombre lo dice, esta sentencia sirve para actualizar los registros de una
tabla, además permite incluir condiciones para modificar registros especı́ficos. Su
sintaxis es la siguiente:
UPDATE nombre_tabla SET columna1 = ’nuevo_valor’ WHERE columna2 = ’valor2’;
Nótese que las condiciones pueden estar asociadas a la misma columna u otra.
DELETE — BORRAR
Esta sentencia permite borrar las columnas de una tabla o todos los datos de la mis-
LATEX
4
Facultad de Ingenierı́a Lab. de Bases de Datos
ma, en caso de que se requiera borrar registros especı́ficos es posible añadir condi-
ciones. Su sintaxis es la siguiente:
DELETE FROM mi_tabla WHERE ’columna’ = ’valor’;
Cabe destacar que se debe tener cuidado con el uso de esta sentencia.
TRUNCATE — BORRAR
Esta sentencia se utiliza para eliminar o borrar los datos que contiene una tabla. Es
útil cuando sólo se quiere borrar los datos, pero no se quiere borrar la tabla. Este
comando deja vacı́a una tabla, es decir, sin datos. Cabe destacar que esta sentencia
permite validar laintegridad referencial de los datos.
TRUNCATE TABLE ’nombre_tabla’;
Transacciones
Las transacciones en SQL son unidades o secuencias de trabajo realizadas de forma orde-
nada y separada en una base de datos. Normalmente representan cualquier cambio en la
base de datos, y tienen dos objetivos principales:
Proporcionar secuencias de trabajo fiables que permitan poder recuperarse fácilmen-
te ante errorres y mantener una base de datos consistente incluso frente a fallos del
sistema.
Proporcionar aislamiento entre programas accediendo a la vez a la base de datos.
Existen tres comandos básicos de control en las transacciones SQL:
COMMIT. Para guardar los cambios.
ROLLBACK. Para abandonar la transacción y deshacer los cambios que se hubieran
hecho en la transacción.
SAVEPOINT. Crea checkpoints, puntos concretos en la transacción donde poder
deshacer la transacción hasta esos puntos.
LATEX
5
Facultad de Ingenierı́a Lab. de Bases de Datos
3. Desarrollo
3.1. Requerimientos implementados sobre la BD
La primer actividad a realizar en la práctica es la realización de un conjunto de modi-
ficaciones sobre la base de datos generada en la Práctica 7 [Tienda de Instrumentos
Musicales], utilizando las sentencias INSERT, UPDATE y DELETE. En total, se realiza-
ron las siguientes actividades:
Inserciones de renglones con y sin encabezados de columnas e inserción con paráme-
tros.
Inserción con selección.
Actualizar dos columnas en un comando.
Actualizar una columna con una condición.
Eliminar todos los renglones, utilizar opcionalmente TRUNCATE.
Eliminar un renglón utilizando una condición.
3.2. Inserciones de renglones
La primer actividad a realiza consiste en la inserción de renglones o registros en la base
de datos utilizando el comando INSERT. Para esto, existen 2 alternativas que se verán a
continuación:
3.2.1. Con encabezados
La inserción de registros con encabezados requiere que, al momento de realizar insercio-
nes, se especifiquen de forma explı́cita TODOS los campos o columnas que compondrán
al nuevo registro a insertar, usando la sintaxis:
INSERT into esquema.NOMBRE (a1, a2, a3,...)
Para ilustrar lo anterior, se realiza la inserción de 3 registros dentro de la tabla
LATEX
6
Facultad de Ingenierı́a Lab. de Bases de Datos
INSTRUMENTO especificando el valor de cada campo. Nótese que al agregar los instru-
mentos no se añade su stock, ya que este tendrá por defecto un valor 5 al no especificarse
dentro de la inserción (restricción especificada durante la práctica anterior). Además, no
es necesarioañadir la llave primaria dentro de la inserción, ya que esta se generará au-
tomáticamente considerando el IDENTITY empleado para crear la restricción de PK.
Al ejecutar las lı́neas de código, se tendrán en total 4 registros dentro de la tabla.
Antes de colocar cada registro se escribe la palabra values, y después, cada registro a
introducir con sus campos especificados en orden, separando cada registro individual con
comas a excepción del último.
Figura 1: Inserción con encabezados en INSTRUMENTO.
LATEX
7
Facultad de Ingenierı́a Lab. de Bases de Datos
´
3.2.2. Sin encabezados
En la siguiente captura se observa una inserción sin hacer uso de encabezados:
Figura 2: Inserción sin encabezados en PERCUSION.
Se puede aprecia una diferencia con respecto al método anterior de inserción, sien-
do el hecho que de que no deben escribirse explı́citamente dentro de la sentencia con
INSERT los campos de cada registro a insertar. En este caso, se realiza una inserción de
4 registros dentro de la tabla PERCUSION.
Un detalle importante a considerar es que PERCUSION, al ser un subtipo de INS-
TRUMENTO, recibe como PK un identificador proveniente de la tabla INSTRUMENTO,
entonces, en la inserción anterior el valor para el identificador de cada registro de PER-
CUSION debe de coincidir con el ID identificador de un registro existente dentro de
INSTRUMENTO. Por ejemplo, si se quiere insertar en PERCUSION el registro (5, ’D’),
pero no existe un instrumento con ID=5, la inserción arrojará como resultado un error.
LATEX
8
Facultad de Ingenierı́a Lab. de Bases de Datos
Figura 3: Error obtenido al tratar de insertar un registro sin existir el ID para un instrumento.
3.3. Inserción con transacciones
La siguiente actividad a realizar consiste en la inserción de 3 registros sin encabezado de
proveedores de instrumentos musicales dentro de la tabla PROVEEDOR, verificando que
los atributos de cada registro se encuentren debidamente llenados y en orden (a excepción
de la PK que se genera automáticamente).
A diferencia de las inserciones previas, en esta ocasión se introduce el uso de tran-
sacciones que, como se abordó previamente, se tratan de agrupamientos de instrucciones
que se ejecutan exitosamente por completo, o no se ejecutan. Entonces, para realizar tal
agrupamiento se especifica la siguiente sintaxis:
BEGIN transaction
--instrucciones agrupadas.
COMMIT/ROLLBACK transaction
ROLLBACK es utilizado cuando se quiere hacer una prueba con la transacción y
verificar que genera los resultados deseados, sin realizar los cambios propiamente sobre
la base, mientras que COMMIT se emplea cuando se desea que los cambios generados
por la transacción se consoliden sobre los datos presentes en la base.
En este caso, se insertan los 3 registros dentro de un solo INSERT y se verifica con
SELECT el resultado de la operación, y finalmente, se consolida con COMMIT; como
puede verse en la imagen anterior donde ya pueden apreciarse los nuevos registros dentro
de la tabla PROVEEDOR.
LATEX
9
Facultad de Ingenierı́a Lab. de Bases de Datos
Figura 4: Inserciones sin encabezado utilizando una transacción.
Durante la clase, el orden de los datos original era incorrecto estando los CURP en
el lugar de los RFC y viceversa. Como se realiza sin encabezado. el orden para añadir
los campos debe de seguirse de forma estricta según lo muestre el orden de los campos
en la tabla (visualizándola dentro del Object Explorer), ya que de lo contrario se puede
cometer el error de añadir valores que no corresponden a los campos de los registros;
como ocurrió en las inserciones de algunas compañeros del laboratorio donde aparecı́a un
error de truncado al colocar el RFC donde debı́a colocarse la CURP entrando en conflicto
con el tamaño máximo de la cadena de caracteres en cada campo.
3.4. Actualizar columnas con UPDATE
Ahora, en lugar de realizar inserciones de registros nuevos, se realizarán modificaciones
sobre las columnas ya existentes dentro de una tabla haciendo uso del comando UPDATE.
A continuación, se detallan dos posibles casos de actualización de columnas utilizando
transacciones para verificar o consolidar los cambios según sea necesario.
3.4.1. Actualizar 1 columna
En este caso se realiza la actualización sobre la columna paı́s dentro de la tabla PROVEE-
DOR, modificando para cada uno de los registros presentes en la tabla su valor en paı́s
para que su valor sea MEXICO. Una vez que se añade UPDATE y el nombre de la tabla,
LATEX
10
Facultad de Ingenierı́a Lab. de Bases de Datos
con SET se especifica la columna a actualizar y el valor con el que se desea sobreescribir
el campo en cada registro de la tabla. Al contar la PK con IDENTITY, esta no se especifica
al añadir el registro.
Figura 5: Actualización de una sola columna en todos los registros de la tabla PROVEEDOR.
Este cambio no se consolida con COMMIT y, en cambio, se emplea ROLLBACK,
ya que el cambio anterior afecta a todos los registros al no contener alguna condición de
cambio, y puede darse el caso de que algunos proveedores sean extranjeros, por tanto, el
cambio anterior provocarı́a la aparición de registros inconsistentes.
3.4.2. Actualizar 2 columnas
Ahora, en este ejemplo se realiza el cambio de dos columnas dentro de una sola tran-
sacción y un único UPDATE. Para esto, se solicita actualizar los datos de la tienda TOP
MUSIC, modificando el valor de su calle con el texto INGENIEROS y su numero con el
valor 345.
Para ubicar el registro a modificar, se realiza un SELECT * sobre la tabla TIENDA
que seleccione todos los registros que tengan por valor en nombre la cadena TOP MUSIC.
Identificado, ahora con el comando UPDATE se especifica nuevamente la tabla TIENDA,
y con SET se declaran los campos a modificar con sus nuevos valores y, finalmente,
LATEX
11
Facultad de Ingenierı́a Lab. de Bases de Datos
se añade un WHERE especificando que el UPDATE se realice en los registros donde
nombre= ’TOP MUSIC’.
Figura 6: Actualización de 2 columnas en un registro con el nombre especificado.
A diferencia del caso anterior, los cambios únicamente afectan a un solo registro
al especificarse con exactitud por medio de WHERE que la modificación solo debe reali-
zarse en los registros que tengan TOP MUSIC por nombre (Que solo es 1 y es único para
cada tienda). Esto es verificable haciendo uso de ROLLBACK al ejecutar la transacción
como se observa en [6].
En la siguiente imagen se observan los cambios realizados restringiendo por medio
de SELECT y WHERE que la visualización de los datos únicamente incluya a los regis-
tros con el nombre de TOP MUSIC. De esta forma, se visualiza con facilidad el registro
original y de nuevo el registro pero ahora con los cambios que se realizarı́an si la tran-
sacción se consolidara en la base. Para efectos de la práctica, se termina consolidando el
cambio con COMMIT.
LATEX
12
Facultad de Ingenierı́a Lab. de Bases de Datos
3.5. Eliminación de registros
3.5.1. Usando DELETE
En este ejemplo se muestra el procedimiento de borrado de un registro de la tabla TIEN-
DA. Observando la estructura lógica de la base de datos, es observable que la tabla TIEN-
DA contiene una dependencia de FK en el sentido de que una tienda tiene 1 o más em-
pleados laborando dentro de ella. En este caso particular, se muestra el borrado de una
tienda que no tiene actualmente empleados asociados a ella.
Entonces, haciendo un SELECT * en la tabla empleadoTienda se observa que las
tiendas 4, 5 y 6 tienen empleaddos asociados, quedando las tiendas 11 y 1004 (el número
varı́a de acuerdo a cada base) o bien, INSTRUMENTOS OK y LOS MEJORES INSTRU-
MENTOS como las tiendas registradas sin empleados. Se selecciona la tienda 11 vacı́a
para fines de ejecución y, al obtener el resultado del SELECT, se observa que no existe
ningún empleado de la tienda que tenga como FK idTienda=11 resultando la selección
vacı́a.
Entonces, dentro de una transacción se procede a usar DELETE especificando la
tienda yWHERE para detallar el ID de la tienda a eliminar. Una vez más se verifican las
tablas TIENDA y empleadoTienda donde la tienda 11 correspondiente a INSTRUMEN-
TOS OK ha sido eliminada de la tabla TIENDA de la base de datos.
Figura 7: SELECT sobre las tiendas y los empleados para verificar aquellas sin empleados asociados.
El borrado anterior es exitoso ya que, como se observó, la tienda eliminada no contenı́a
ningún empleado que tuviese una dependencia de FK que hiciera referencia a la tienda
en cuestión. Si hubiese sido el caso de que algún empleado tuviese en su campo idTienda
el valor 11, el resultado obtenido hubiera sido un error por parte del manejador. En el
LATEX
13
Facultad de Ingenierı́a Lab. de Bases de Datos
Figura 8: Eliminación de la tienda sin empleados con idTienda=11.
siguiente ejemplo, se muestra el error obtenido al tratar de eliminar la tienda con idTien-
da=4; con el manejador indicando que existe un conflicto de FK al tratar de ejecutar el
DELETE.
Si la restricción FK de idTienda en la tabla empleadoTienda hubiese sido creada
especificando la instrucción CASCADE en su creación, este problema no hubiese apa-
recido. En cambio, como en este caso no fue ası́, las modificaciones no se propagan y el
resultado es un conflicto directo entre la instrucción con DELETE y la restricción de FK
al tratar de de preservarse la integridad de los datos.
En conclusión, si se quisiese entonces eliminar una tienda que contenga empleados,
en primer lugar deberán eliminarse todos los empleados que tengan asociada la tienda en
cuestión por medio de una FK, y finalmente, ya que la tienda ya no contenga ningún
empleado asociado por FK con el ID de la tienda a eliminar, se procede a su eliminación
LATEX
14
Facultad de Ingenierı́a Lab. de Bases de Datos
Figura 9: Error obtenido al tratar de eliminar una tienda que contiene empleados asociados.
de la forma que se vio en el ejemplo anterior.
3.5.2. Usando TRUNCATE
En este ejemplo, se realiza la eliminación de los registros de las tablas PROVEEDOR y
empleadoTienda haciendo uso de la instrucción TRUNCATE. Dentro de una transacción,
en primer lugar con SELECT * se verifica el estado actual de ambas tablas, y luego, se
elimina por completo los registros de la tabla PROVEEDOR haciendo uso de DELETE,
y luego, se eliminan los registros de empleadoTienda pero utilizando TRUNCATE table.
Finalmente, se verifica el resultado de nuevo con SELECT * sobre ambas tablas.
DELETE y TRUNCATE, a pesar de que en papel parecen realizar la misma ac-
ción, tienen diferencias clave entre ambos que permite distinguirlos. En principio, a dife-
rencia de DELETE, la instrucción TRUNCATE no admite el borrado selectivo de datos
haciendo uso de sentencias condicionales (con WHERE), y por tanto, borra todos y cada
uno de los registros de la tabla indicada sin excepción. Además, TRUNCATE no puede
ser utilizado cuando se presentan conflictos por la presencia de referencias de FK en la
LATEX
15
Facultad de Ingenierı́a Lab. de Bases de Datos
Figura 10: Eliminación de registros en la tabla Proveedor y empleadoTienda.
tabla a eliminar. Por otra parte, tanto TRUNCATE como DELETE permiten validar la
integridad referencial de los datos.
Figura 11: Error al tratar de eliminar una tabla referenciada por un constraint de FK.
Como se observa en la imagen anterior, la integridad referencial derivada del constraint
de FK impide su eliminación haciendo uso de TRUNCATE (verifica si la PK de la tabla
se ha propagado a otra tabla como FK y campo de otra tabla); aunque si se modifica la
lı́nea y se usa DELETE en su lugar se ejecutará con éxito y la transacción se completará
sin errores.
LATEX
16
Facultad de Ingenierı́a Lab. de Bases de Datos
3.6. Eliminar un renglón usando una condición
Ahora, se aborda la eliminación de un renglón o registro haciendo uso de una condi-
cional con WHERE. En la siguiente transacción, se muestra la eliminación del registro
con razonSocial=’STRATUS MUSICAL’ o CURP=’FRNJ789623HY4JU988’ de la tabla
PROVEEDOR haciendo uso de DELETE.
Figura 12: Eliminación de un renglón con DELETE y WHERE.
Como se observa, al tratarse de una condiciónal con disyunción OR, se eliminarán
los registros que cumplan con A o B, siendo estas condiciones las especificadas al inicio
para los campos razonSocial y CURP. Verificando el resultado, se observa que se han
eliminado 2 registros de proveedores de la tabla, quedando únicamente el registro que no
cumple ni con A ni con B en los dos campos especificados.
LATEX
17
Facultad de Ingenierı́a Lab. de Bases de Datos
3.7. Comportamiento transaccional con COMMIT, ROLLBACK y SAVE
En la última actividad realizada durante la sesión del laboratorio se abordó más a pro-
fundidad ciertas particularidades del uso de transacciones. Una de ellas es la posibilidad
de utilizar una caracterı́stica dentro de ellas denominada puntos de salvado, que son sen-
tencias dentro de las transacciones que permiten englobar un conjunto de sentencias in-
ternamente, de forma que los resultados de esas instrucciones se preserven en caso de
realizarse un rollback hacia ese punto en cuestión.
En primer lugar, dentro de la tabla estatus se insertan dentro de ella 2 registros
correspondientes a los estatus posibles para un pedido de una tienda de instrumentos.
Luego, dentro de la transacción se inicia revisando con SELECT el contenido de la tabla
estatus, y luego, se insertan nuevamente otros 2 estatus al catálogo de estatus y se verifica
nuevamente la inserción correcta. Después de todas estas instrucciones, se escribe SAVE
TRAN y un nombre para indicar un nuevo punto de salvado (o Savepoint). Con esto,
todas las transacciones anteriores al punto de salvado quedarán englobadas en el savepoint
punto1.
Pasado el punto1, se realiza un UPDATE en la tabla estatus y se cambia el valor
del campo descripcion en el registro que tiene a la cadena CANCELADO por EN AUTO-
RIZACION. Luego, se revisa el contenido nuevamente de estatus y después aparece una
sentencia ’ROLLBACK TRANSACION PUNTO1’. Este rollback tiene una particula-
ridad, y es que únicamente afectará a aquellas transacciones que estén posteriormente a
la declaración del savepoint point1; lo cual se reflejará en el hecho de que al ejecutar la
transacción tal cual, al mostrar los resultados de la misma (ya sea con rollback o commit
al final), el UPDATE escrito tras punto1 no se verá reflejado como si nunca hubiese sido
escrito en la transacción.
Como se observa en el resultado de la ejecución, tras el punto1 se realiza el UPDA-
TE y el cambio se ve reflejado en el registro con idEstatus=4 y mostrado en pantalla al
usar SELECT * en la tabla, sin embargo, haciendo uso del ROLLBACK hacia el punto1,
este UPDATE ya no aparece al concluir exitosamente la ejecución de la transacción. Por
otra parte, todos los cambios realizados por las instrucciones escritas antes de la declara-
ción del punto de salvado son preservadas y, si se realiza un COMMIT, se verán reflejadas
en la tabla estatus.
LATEX
18
Facultad de Ingenierı́a Lab. de Bases de Datos
Figura 13: Resultado de la ejecución de la transacción.
3.8. Poblado de tablas
Para la actividad en casa de la práctica presente, se solicita realizar el poblado de tablas
en la base, considerando lo siguiente:
Insertar 3 registros de instrumentos en cada subtipo, en total 9 instrumentos.
6 pedidos con al menos 2 instrumentos, de los cuales 2 pedidos serán en proceso, 1
pedido incompleto y 3 pedidos en autorización.
3 empleados por tienda.
Para realizar las tres actividades, se implementa el uso de transacciones para veri-
ficar que los cambios hechos en un inicio con ROLLBACK y después consolidarlos con
COMMIT. Entonces, la primer tarea a realizar consiste en el llenado de la tabla INSTRU-
MENTO y se insertan los siguientes registros.
LATEX
19
Facultad de Ingenierı́a Lab. de Bases de Datos
Figura 14: Registros de instrumentos propuestos con sus subtipos definidos.
Todo esto seengloba dentro de una transacción, la cual al ejecutarla produce el siguiente
resultado exitoso:
Figura 15: Inserción exitosa de los nuevos registros en el supertipo y el subtipo.
LATEX
20
Facultad de Ingenierı́a Lab. de Bases de Datos
Figura 16: Vista de las tablas actualizadas.
Para esta inserción, en primer lugar se añaden todos los registros de instrumentos en el
supertipo, y después, se añade cada uno en el subtipo que corresponde; esto debido a que
se requiere crear en primer lugar los registros dentro detro del supertipo ya que de lo
contrario la inserción resultarı́a en un error al requerirse la PK del instrumento en primer
lugar.
Hecho esto, se pasa a realizar los 6 pedidos solicitados con sus consideraciones. De
igual forma, se utiliza un INSERT INTO con los valores a especificar, y una vez llenados
los campos de cada uno, se efectúa la transacción. Nótese que se especifica cada llave
foránea, las cuales deben de existir en primer lugar y corresponder a tiendas, proveedores
y estatus que existan dentro de las tablas.
LATEX
21
Facultad de Ingenierı́a Lab. de Bases de Datos
Figura 17: Vista de las tablas actualizadas.
Ahora, una vez hechos los pedidos se realiza el llenado de la tabla intermedia pro-
ducto de la relación m:n entre PEDIDO e INSTRUMENTO. Considerando los valores
insertados en INSTRUMENTO y los pedidos insertados, se realizan las siguientes inser-
ciones:
Figura 18: Inserciones de pedidos con sus instrumentos asociados a la compra.
El resultado al ejecutar esta transacción es el siguiente, donde cada registro de la tabla
intermedia permite llevar un registro de los instrumentos incluidos en cada pedido (que
pueden ser más de uno):
LATEX
22
Facultad de Ingenierı́a Lab. de Bases de Datos
Figura 19: Desglose de los instrumentos asociados a cada pedido.
Finalmente, se realiza la inserción de 11 empleados dentro de la tabla empleado-
Tienda, considerando que cada una de las tiendas debe tener asociados como mı́nimo
un total de 3 empleados. Los registros empleados se generaron de forma aleatoria para
propósitos del ejercicio:
Figura 20: Inserciones de empleados con su tienda asociada.
Es importante señalar que se tuvieron en cuenta los empleados existentes que ya
LATEX
23
Facultad de Ingenierı́a Lab. de Bases de Datos
tenı́an una relación con alguna tienda, entonces, el resultado obtenido tras realizar la in-
serción anterior es el siguiente:
Figura 21: Resultado de la transacción para insertar empleados.
LATEX
24
Facultad de Ingenierı́a Lab. de Bases de Datos
3.8.1. Segunda ejecución
A continuación se anexan las capturas de pantalla del integrante de la brigada Solano
González Felipe de Jesús ejecutando las lı́neas de código añadidas en el script para realizar
la actividad en casa de la práctica 8:
Insertar 3 registros de instrumentos en cada subtipo
En la siguiente imagen, se muestra como se insertan los valores en los subtipos y se hace
la consulta para observar el cambio.
Figura 22: Lllenado de los subtipos.
6 pedidos con al menos 2 instrumentos, de los cuales 2 pedidos serán en proceso, 1
pedido incompleto y 3 pedidos en autorización.
Primero se llena la tabla PEDIDO con los instrumentos y estatus requeridos. En las
imágenes se muestra la ejecución del script y tabla de pedidos llena.
Figura 23: Lllenado de la tabla pedido.
LATEX
25
Facultad de Ingenierı́a Lab. de Bases de Datos
Después se llena la tabla intermedia asociada a los pedidos recien añadidos.
Figura 24: Lllenado de la tabla intermedia entre PEDIDO e INSTRUMENTO.
3 empleados por tienda.
Por último, se llena la tabla con tres empleados para cada tienda.
Figura 25: Lllenado de la tabla de los empleados por tienda.
4. Conclusiones
Solano González Felipe de Jesús:
La práctica ayudó a reforzar los conocimientos adquiridos en la práctica anterior.
En general, las sentencias utilizadas para el desarrollo de la práctica dejan en claro
la forma adecuada de insertar, actualizar y borrar datos, por supuesto, tomando en
cuenta diferentes condiciones. También, los diferentes ejercicios realizados ayudan
LATEX
26
Facultad de Ingenierı́a Lab. de Bases de Datos
a comprender el uso de las sentencias para diferentes casos, ası́ como su correcta
sintaxis.
Uno de los puntos más importantes revisados en la práctica fue el uso de las transac-
ciones, una herramienta bastante útil que nos permite poder observar, comprender y
simular los cambios a la base de datos. Además, se hizo énfasis en la diferencia que
existe entre las sentencias de borrar o eliminar tablas o datos.
En conclusión, se puede mencionar que los objetivos de la práctica se cumplen por-
que se comprendió y utilizó las sentencias básicas para la manipulación de datos
en lenguaje SQL. También, se comprendió el uso de las transacciones ası́ como las
diferentes sentencias que las complementan.
Téllez González Jorge Luis:
El trabajo realizado durante la práctica permitió afianzar los conocimientos iniciales
que se fueron adquiriendo durante la práctica anterior que introdujo el uso de los
comandos básicos para dar forma a la base de datos en el manejador de SQL Server.
En esta práctica, considero especialmente importante mencionar que el concepto
de transacción fue particularmente útil para realizar la actividad de tarea, ya que
permitió poder experimentar la realización de cambios en los registros de la base
sin el riesgo de realizar un paso erroneo que resulte en pérdidas que, si bien en el
ambiente controlado en el que estamos son meramente anecdóticos, en un entorno
productivo pueden resultar en graves, o incluso, fatales.
También, vale la pena mencionar que se observaron las diferentes formas de in-
sertar registros, modificarlos (ası́ como las columnas) o incluso eliminar registros,
observando los dos métodos disponibles y sus diferencias; siendo un detalle clave el
observar las diferencias entre DELETE y TRANSACTION respecto al uso de con-
dicionales para el borrado selectivo y teniendo cada uno su caso de uso dependiendo
el alcance de los registros a eliminar en una o más tablas.
Por lo tanto, considerando que se han asimilado los fundamentos básicos para la
inserción, actualización y eliminación de registros dentro de la base, y además, se ha
aplicado el uso de transacciones para el llenado de las tablas junto con los conceptos
LATEX
27
Facultad de Ingenierı́a Lab. de Bases de Datos
anteriores, es posible afirmar que los objetivos de esta práctica han sido cumplidos
con total éxito.
Referencias
[1] Diferencias entre DDL, DML y DCL. Recuperado de: https://www.
todopostgresql.com/diferencias-entre-ddl-dml-y-dcl/. Fecha de consulta:
03/11/2021.
[2] Lenguaje de manipulación de datos. Recuperado de: https://es.wikipedia.
org/wiki/Lenguaje_de_manipulaci%C3%B3n_de_datos. Fecha de consulta:
03/11/2021.
[3] SQL — DDL, DQL, DML, DCL and TCL Commands. Recuperado de: https:
//www.geeksforgeeks.org/sql-ddl-dql-dml-dcl-tcl-commands/. Fecha de
consulta: 26/10/2021.
[4] SQL TRANSACTIONS. Recuperado de: https://www.geeksforgeeks.org/
sql-transactions/. Fecha de consulta: 04/10/2021.
[5] López-Belmonte, P. and Solana, A. (2009). Administración de bases de datos con
SQL Server 2008. Luarna Ediciones, S.L., 1st edition.
Los créditos de las fotografı́as pertenecen a sus respectivos autores. ©
LATEX
28
https://www.todopostgresql.com/diferencias-entre-ddl-dml-y-dcl/
https://www.todopostgresql.com/diferencias-entre-ddl-dml-y-dcl/
https://es.wikipedia.org/wiki/Lenguaje_de_manipulaci%C3%B3n_de_datos
https://es.wikipedia.org/wiki/Lenguaje_de_manipulaci%C3%B3n_de_datos
https://www.geeksforgeeks.org/sql-ddl-dql-dml-dcl-tcl-commands/
https://www.geeksforgeeks.org/sql-ddl-dql-dml-dcl-tcl-commands/
https://www.geeksforgeeks.org/sql-transactions/
https://www.geeksforgeeks.org/sql-transactions/
	Objetivo
	Introducción
	Desarrollo
	Requerimientos implementados sobre la BD
	Inserciones de renglones
	Con encabezados
	Sin encabezados
	Insercióncon transacciones
	Actualizar columnas con UPDATE
	Actualizar 1 columna
	Actualizar 2 columnas
	Eliminación de registros
	Usando DELETE
	Usando TRUNCATE
	Eliminar un renglón usando una condición
	Comportamiento transaccional con COMMIT, ROLLBACK y SAVE
	Poblado de tablas
	Segunda ejecución
	Conclusiones