Practica 5

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

Universidad Nacional Autónoma de México

Facultad de Ingeniería
Ingeniería en Computación
Laboratorio de Bases de Datos
Practica 5: Diseño básico de modelos relacionales.
Fecha de realización: 5 de octubre 2021
Fecha de entrega: 12 de octubre 2021
Del Valle Aragón Alexis Rafael

2. Introducción:

Un modelo es un formalismo que nos permite representar la realidad, durante los


primeros años de las bases de datos, se utilizó el modelo jerárquico como la primera
forma de describir de forma más humana una base de datos. Después reinó el modelo
en red especialmente en su norma Codasyl. Así a principios de los 70 parecía que el
modelo a aplicar al implementar bases de datos sería Codasyl y lo sería por muchos
años. Sin embargo, Edgar Frank Codd definió las bases del modelo relacional a finales
de los 60.

El modelo relacional de una base de datos es el modelo más utilizado en la actualidad


para implementar bases de datos ya planificadas. Estos modelos permiten establecer
relaciones entre los datos, y a través de estas conexiones se relacionan los datos de
ambas tablas.

Un modelo relacional se da a partir de un diagrama entidad relación, utilizando las


herramientas CASE y de acuerdo a las reglas del modelo relacional se implementará el
modelo de dos diagramas entidad relación postulados con anterioridad. Utilizando un
sistema manejador de datos se traslada este modelo en un sistema donde accederán
algunos usuarios.

1
3. Objetivos, métodos y materiales:
El alumno comprenderá e implementará la construcción de modelos de datos relacionales
básicos empleando herramientas CASE a partir de un diagrama ER.

➢ Oracle

4. Desarrollo:
▪ Creamos una tabla Alumnos e insertamos un par de datos.
Create table Alumno_DVAAR(
Matricula Number(10),
Nombre Varchar(20),
Edad Number(2),
Genero Char(1)
);

Insert Into Alumno_DVAAR Values(316159762, 'Alejandro', 21, 'M');


Insert Into Alumno_DVAAR Values(316159762, 'Brian', 22, 'H');

La matrícula, que debería ser una llave primaria, se repite debido a que no
se definió como tal.

▪ Definimos entonces una llave primaria para la tabla alumnos con el uso del
constraint PK:
Create table Alumno_DVAAR(
Matricula Number(10),
Nombre Varchar(20),
Edad Number(2),
Genero Char(1),
Constraint PK_Alumno_DVAAR primary key (Matricula)
);

Insert Into Alumno_DVAAR Values(316159762, 'Alejandro', 21, 'M');


Insert Into Alumno_DVAAR Values(316159763, 'Brian', 22, 'H');

2
Dado que ya se estableció una llave primaria, el valor de la "Matricula" no se
puede repetir dada la restricción de unicidad en llave primaria.

▪ Ahora ingresamos una nueva tabla Carrera e ingresamos datos a nuestra


tabla Alumno para añadir una carrera a un alumno:

Create Table Carrera_DVAAR(


Id_Carrera Number(2),
Nombre Varchar(10)
);

Insert into Carrera_DVAAR values (1,'Ingenieria');


Insert into Carrera_DVAAR values (2,'Admin');

Create table Alumno_DVAAR(


Matricula Number(10),
Nombre Varchar(20),
Edad Number(2),
Genero Char(1),
Id_Carrera Number(2),
Constraint PK_Alumno_DVAAR primary key (Matricula)
);

Insert Into Alumno_DVAAR Values(316159762, 'Alejandro', 21, 'M',1);


Insert Into Alumno_DVAAR Values(316159763, 'Brian', 22, 'H',1);
Insert Into Alumno_DVAAR Values(316159764, 'Marlene', 21, 'F',2);
Insert Into Alumno_DVAAR Values(316159765, 'Marisela', 24, 'F',NULL);
Insert Into Alumno_DVAAR Values(316159766, 'Axel', 23, 'M',3);
Insert Into Alumno_DVAAR Values(316159767, 'Marisol', 23, 'F',3);

3
Los datos ingresan sin problema dado que la información entre Carrera y
Alumno actúa de forma independiente, es necesario ingresar una llave
foránea.

▪ Creamos nuestra llave foránea, primero creando una llave primaria en la


tabla “Carrera” y con el Constraint FK, la ligamos a la tabla Alumno:

Create Table Carrera_DVAAR(


Id_Carrera Number(2),
Nombre Varchar(10),
Constraint PK_Carrera_DVAAR primary key (Id_Carrera)
);

Insert into Carrera_DVAAR values (1,'Ingenieria');


Insert into Carrera_DVAAR values (2,'Admin');

Create table Alumno_DVAAR(


Matricula Number(10),
Nombre Varchar(20),
Edad Number(2),
Genero Char(1),
Id_Carrera Number(2),
Constraint PK_Alumno_DVAAR primary key (Matricula),
Constraint FK_Alu_Car_DVAAR Foreign key (Id_Carrera)
References Carrera_DVAAR (Id_Carrera)
);

Insert Into Alumno_DVAAR Values(316159762, 'Alejandro', 21, 'M',1);


Insert Into Alumno_DVAAR Values(316159763, 'Brian', 22, 'H',1);
Insert Into Alumno_DVAAR Values(316159764, 'Marlene', 21, 'F',2);
Insert Into Alumno_DVAAR Values(316159765, 'Marisela', 24, 'F',NULL);
Insert Into Alumno_DVAAR Values(316159766, 'Axel', 23, 'M',3);
Insert Into Alumno_DVAAR Values(316159767, 'Marisol', 23, 'F',3);

4
No permite el ingreso de todos los campos debido al registro de una carrera
inexistente (definida con el numero 3), mientras que en la tabla “Carrera”
solo se cuentan con dos registros.

▪ Ahora haremos uso del contraint NULL para evitar que campos como
Id_Carrera y Genero queden vacíos:

Create table Alumno_DVAAR(


Matricula Number(10),
Nombre Varchar(20),
Edad Number(2),
Genero Char(1) NOT NULL,
Id_Carrera Number(2) NOT NULL,
Constraint PK_Alumno_DVAAR primary key (Matricula),
Constraint FK_Alu_Car_DVAAR Foreign key (Id_Carrera)
References Carrera_DVAAR (Id_Carrera)
);

Insert Into Alumno_DVAAR Values(316159762, 'Alejandro', 21, 'M',1);


Insert Into Alumno_DVAAR Values(316159763, 'Brian', 22, 'H',1);
Insert Into Alumno_DVAAR Values(316159764, 'Marlene', 21, 'F',2);
Insert Into Alumno_DVAAR Values(316159765, 'Marisela', 24, 'F',NULL);
Insert Into Alumno_DVAAR Values(316159766, 'Axel', 23, 'M',3);
Insert Into Alumno_DVAAR Values(316159767, 'Marisol', 23, 'F',3);
Insert Into Alumno_DVAAR Values(316159768, 'Luis', 23, NULL,NULL);
Insert Into Alumno_DVAAR Values(316159769, 'Jhoana', 23,NULL,1);

5
No acepta los registros nulos para género o Id_Carrera por tanto es
necesario modificar los datos de entrada.

Insert Into Alumno_DVAAR Values(316159762, 'Alejandro', 21, 'M',1);


Insert Into Alumno_DVAAR Values(316159763, 'Brian', 22, 'H',1);
Insert Into Alumno_DVAAR Values(316159764, 'Marlene', 21, 'F',2);
Insert Into Alumno_DVAAR Values(316159765, 'Marisela', 24, 'F',1);
Insert Into Alumno_DVAAR Values(316159766, 'Axel', 23, 'M',2);
Insert Into Alumno_DVAAR Values(316159767, 'Marisol', 23, 'F',2);
Insert Into Alumno_DVAAR Values(316159768, 'Luis', 23, 'm',2);
Insert Into Alumno_DVAAR Values(316159769, 'Jhoana', 23,'x',1);

Se registran con éxito todos los datos, pero el problema que persiste es la
diferencia de caracteres para Genero.

▪ Para solucionar el problema de “Genero”, recurrimos al constraint Check:

Create table Alumno_DVAAR(


Matricula Number(10),
Nombre Varchar(20),
Edad Number(2),
Genero Char(1) NOT NULL,
Id_Carrera Number(2) NOT NULL,
Constraint PK_Alumno_DVAAR primary key (Matricula),
Constraint FK_Alu_Car_DVAAR Foreign key (Id_Carrera)
References Carrera_DVAAR (Id_Carrera),
Constraint CK_Genero Check (Genero in ('M', 'F', 'S'))
);

Insert Into Alumno_DVAAR Values(316159762, 'Alejandro', 21, 'M',1);


Insert Into Alumno_DVAAR Values(316159763, 'Brian', 22, 'H',1);
Insert Into Alumno_DVAAR Values(316159764, 'Marlene', 21, 'F',2);
Insert Into Alumno_DVAAR Values(316159765, 'Marisela', 24, 'F',1);
Insert Into Alumno_DVAAR Values(316159766, 'Axel', 23, 'M',2);
Insert Into Alumno_DVAAR Values(316159767, 'Marisol', 23, 'F',2);
Insert Into Alumno_DVAAR Values(316159768, 'Luis', 23, 'm',2);
Insert Into Alumno_DVAAR Values(316159769, 'Jhoana', 23,'x',1);

6
Dado que se asignó una restricción para acceso de datos en "Genero", solo
aceptara los registros cuyo genero sea: M (masculino), F (Femenino) y S (Sin
contestar).

5. Resultados:
▪ Constraint de tipo Unique: Este constraint impide que se duplique la clave a la
cual se le ha asignado la restricción (que no sea llave primaria), además la
restricción permite valores nulos.

Añadimos el contsraint de la forma: UQ_NOMBRETABLA_NOMBRECAMPO


UNIQUE (NOMBRE CAMPO) y añadimos dos campos únicos “Curp” y “RFC”.

Create table Alumno_DVAAR(


Matricula Number(10),
Curp Varchar(18),
RFC Varchar(13),
Nombre Varchar(20),
Edad Number(2),
Genero Char(1) NOT NULL,
Id_Carrera Number(2) NOT NULL,
Constraint PK_Alumno_DVAAR primary key (Matricula),
Constraint FK_Alu_Car_DVAAR Foreign key (Id_Carrera)
References Carrera_DVAAR (Id_Carrera),
Constraint CK_Genero Check (Genero in ('M', 'F', 'S')),
constraint UQ_Alumno_DVAAR_Curp unique (Curp),
constraint UQ_Alumno_DVAAR_RFC unique (RFC)
);

Insert Into Alumno_DVAAR Values(316159762, 'MAHJ280603MSPRRV01',


'MAHJ280603MSP', 'Alejandro', 21, 'M',1);
Insert Into Alumno_DVAAR Values(316159763, 'MAHJ280603MSORRV02',
'MAHJ280603MSO', 'Brian', 22, 'H',1);
Insert Into Alumno_DVAAR Values(316159764, NULL, NULL,'Marlene', 21, 'F',2);
Insert Into Alumno_DVAAR Values(316159765, 'MAHJ280603MSSRRV04',
'MAHJ280603MSS', 'Marisela', 24, 'F',1);
Insert Into Alumno_DVAAR Values(316159766, NULL, 'MAHJ280603MSV',
'Axel', 23, 'M',2);

7
Insert Into Alumno_DVAAR Values(316159767, 'MAHJ280603MSDRRV06',
'MAHJ280603MSD', 'Marisol', 23, 'F',2);

Observamos que los datos se añadieron correctamente, incluidos aquellos


donde el curp o RFC es de valor nulo, pero no se repite ninguno.

▪ Constraint de tipo Default: La restricción DEFAULT se utiliza para insertar un


valor predeterminado en una columna. El valor por defecto se añadirá a todos
los registros nuevos, si no se especifica ningún otro valor.
Definimos en nuestra tabla Alumno como Ciudad predeterminada la CDMX.
CAMPO [TIPO_DE_DATO] DEFAULT [‘VALOR_DEFAULT’]

Create table Alumno_DVAAR(


Matricula Number(10),
Curp Varchar(18),
RFC Varchar(13),
Nombre Varchar(20),
Edad Number(2),
Genero Char(1) NOT NULL,
Ciudad Varchar(40) DEFAULT 'CDMX',
Id_Carrera Number(2) NOT NULL,
Constraint PK_Alumno_DVAAR primary key (Matricula),
Constraint FK_Alu_Car_DVAAR Foreign key (Id_Carrera)
References Carrera_DVAAR (Id_Carrera),
Constraint CK_Genero Check (Genero in ('M', 'F', 'S')),
constraint UQ_Alumno_DVAAR_Curp unique (Curp),
constraint UQ_Alumno_DVAAR_RFC unique (RFC)
);

Insert Into Alumno_DVAAR Values(316159762, 'MAHJ280603MSPRRV01', 'MAHJ280603MSP',


'Alejandro', 21, 'M',Default,1);

8
Insert Into Alumno_DVAAR Values(316159763, 'MAHJ280603MSORRV02', 'MAHJ280603MSO',
'Brian', 22, 'M','Juarez',1);
Insert Into Alumno_DVAAR Values(316159764, NULL, NULL,'Marlene', 21, 'F','Puebla',2);
Insert Into Alumno_DVAAR Values(316159765, 'MAHJ280603MSSRRV04', 'MAHJ280603MSS',
'Marisela', 24, 'F',Default,1);
Insert Into Alumno_DVAAR Values(316159766, NULL, 'MAHJ280603MSV', 'Axel', 23,
'M',Default,2);
Insert Into Alumno_DVAAR Values(316159767, 'MAHJ280603MSDRRV06', 'MAHJ280603MSD',
'Marisol', 23, 'F',Default,2);

Aquellos alumnos que tienen la ciudad definida como Default se les asigno el valor
predeterminado “CDMX”.

6. Conclusión:
El desarrollo de la practica difiere un poco del objetivo inicial dado que no se realizo el
desarrollo de modelos relacionales, sin embargo, se realiza la implementación de dichos
modelos directamente en Oracle mediante creación de tablas y los diferentes tipos de
constraint.

El propósito de los constraint era el de conseguir una forma mas eficiente en la captura de
datos que ingresan a nuestras tablas para su posterior consulta. Con estas herramientas básicas
se puede realizar el ingreso optimo de cualquier tabla perteneciente a un modelo relacional, las
cuales también se encuentran relacionadas con estas tablas y dependiendo del contexto
establecido delimitar la información que insertamos.

9
7. Cuestionario:
Jerarquías en Bases de datos: “Conocidas también por relaciones ISA o de herencia.
Ocurre cuando se necesita unificar entidades agrupándolas en una
principal(generalización) o dividir una general en otras más específicas(especialización)”.
(Ismael, 2019)

Tipos de Jerarquías:

• Generalización: En toda jerarquía los campos se heredan del supertipo, pero es


posible que cada entidad tenga su propia clave principal, de forma que se puede
identificar de forma independiente.

• Especialización: En este tipo de jerarquía también se heredan los campos del


supertipo, pero la diferencia que hay con la generalización, es que en la
especialización todas las entidades intervinientes comparten la clave del
supertipo.

• Relaciones de jerarquía total: Ocurre cuando no existen registros del supertipo


que no estén relacionados con el subtipo.

• Relaciones de jerarquía parcial. Esto pasa cuando registros del supertipo no


están relacionados con ninguno de los subtipos.

• Jerarquia exclusiva: Esto pasa cuando un registro del supertipo puede estar
relacionado con más de un registro de los subtipos.

• Jerarquia solapada: Ocurre cuando un registro de la superentidad está


relacionado de forma exclusiva con las subentidades.

• Recursividad: Es la relación que se da de una tabla consigo misma. Los


esquemas de asignación suelen incluir relaciones recursivas donde un elemento
y su antecesor son del mismo tipo.

10
8. Bibliografía.

✓ Ismael, R. G. (21 de Junio de 2019). Enredado con bases de datos. Obtenido de


Medium: https://medium.com/enredando-con-bases-de-datos/bbdd-jerarquías-
9c43fef4b487

Índice
1- Portada ...................................................................................................................................... 1
2- Introducción............................................................................................................................... 1
3- Objetivo, métodos y materiales ................................................................................................. 2
4-Desarrollo ................................................................................................................................... 2
5- Resultados ................................................................................................................................. 7
6- Conclusión ................................................................................................................................. 9
7- Cuestionario............................................................................................................................. 10
8- Bibliografía .............................................................................................................................. 11

Índice de Imágenes
1) Creación de tabla Alumno 1
2) Definición de llave primaria 2
3) Creación de tabla carrera 3
4) Definición de llave foránea 4
5) Definición de valores no nulos 5
6) Corrección de valores nulos 5
7) Restricción check en Genero 6
8) Constraint Unique 7
9) Constraint Default 8

11

También podría gustarte