Sie sind auf Seite 1von 26

UNIDAD 1: LENGUAJE DE CONSULTA ESTRUCTURADO SQL

FASE 2 - DISEÑO

PARTICIPANTES:

CC: 80.902.400 – HAROLD ALBERTO BAUTISTA AGUDELO


CC: 1015416917 - JULIANA MARÍA ACERO CARRILLO
CC: 80249826 - WILDER ALFREDO ARIAS ARIAS

GRUPO No. 301125-3

Tutor:
Mariano Esteban Romero

Universidad Nacional Abierta y a Distancia – UNAD


Escuela Ciencias básicas, tecnología e ingeniería
Programa Ingeniería de Sistemas
Base de datos avanzada 301125
Periodo 16-04
Colombia
2020
TABLA DE CONTENIDO
INTRODUCCIÓN ...................................................................................................................... 3
OBJETIVOS ................................................................................................................................ 4
Objetivo General ................................................................................................................. 4
Objetivos Específicos ......................................................................................................... 4
RESULTADO .............................................................................................................................. 5
1. Selección y respuesta de la pregunta motivadora..................................... 5
2. Diseño modelo Entidad Relación y modelo Relacional ............................. 8
- Modelo de Datos Entidad Relación – Según Peter Chen ......................... 8
- Técnicas de normalización .................................................................................. 9
- Modelo de Datos Relacional – Según Edgar Frank Codd....................... 12
3. Desarrollo de la base de datos relacional ................................................... 14
4. Consultas con JOINS ........................................................................................... 21
5. Consultas con funciones .................................................................................... 22
6. Evidencias de la participación en el foro ..................................................... 23
CONCLUSIONES .................................................................................................................... 25
BIBLIOGRAFÍA ....................................................................................................................... 26
INTRODUCCIÓN

En este trabajo se pretende mostrar de una forma detallada el proceso


de creación de consultas y funciones, así como de creación de tablas
en bases de datos relacionales, teniendo en cuenta la problemática
presentada en la UNAD, a través del uso del leguaje SQL.
OBJETIVOS

Objetivo General
Diseñar la base de datos relacional propuesta en la fase 1.

Objetivos Específicos
Fortalecer los conocimientos y contextos del lenguaje estructurado
SQL.
Identificar y normalizar las entidades.
Crear las tablas y su estructura de atributos en interfaz gráfica y
código.
Insertar, consultar y ejecutar sentencias sobre la base de datos
diseñada.
RESULTADO

1. Selección y respuesta de la pregunta motivadora

Recuerde: que la respuesta debe ser un párrafo de su propia autoría


que contenga mínimo 200 palabras y máximo 300 palabras;
además, debe hacer un comentario a la respuesta de un compañero.

Nombre Estudiante 1: HAROLD ALBERTO BAUTISTA AGUDELO


Pregunta 1: ¿Qué es una base de datos relacional?
Respuesta:
Una base de datos relacional (BDR) es un tipo de base de datos (BD);
pero entonces primero debemos definir que es una BD; lo cual
corresponde a una colección organizada de información estructurada
o datos, que se encuentran almacenados de forma digital; por lo que
una BDR es una forma de almacenamiento que proporciona acceso
diferentes datos relacionados entre sí, las BDR se basan en el modelo
relacional, el cual fue modelado de datos propuesto por Edgar Frank
Codd en los años 70 basado en la lógica de predicados y en la teoría
de conjuntos, lo cual permite que las BDR permiten interactuar de
forma intuitiva y directa al representar datos en las tablas, en este
tipo de BD cada fila de la tabla tiene un registro ID único llamado
clave, mientras que las columnas de las tabla contienen atributos de
los datos y cada registro generalmente tiene un valor para cada
atributo, lo que facilita el establecimiento de las relaciones entre los
puntos de datos.
Una base de datos es usualmente controlada por un sistema de
gestión de base de datos (DBMS) que permite consultar, manipular
y definir datos; y adicional proporciona control de acceso a la
información de forma segura y confiable.
Las BDR se usan en todo tipo de organización para hacer seguimiento
de inventarios, procesar transacciones de comercio electrónico,
administrar grandes cantidades de información de los clientes,
hechos históricos y entre otras más posibilidades donde se requiere
que la información relacione entre sí y se deban administrar de una
manera segura, consistente y basada en reglas.
Comentario: Complementando lo que mencionas, las bases de
datos relacional están basadas en el modelo relacional, lo que
significa que las estructuras lógicas de datos, están separadas de
las estructuras físicas de almacenamiento, lo que permite a un
administrador de la base de datos gestionar el almacenamiento
físico de los datos sin afectar el acceso a esos datos en su forma
lógica. Esto también aplica para las operaciones que se realizan en
la base de datos, pues la parte lógica permite especificar el
contenido que se necesita y la parte física especifica cómo se debe
acceder a esos datos para luego ejecutar la tarea.
Autor del comentario: Juliana María Acero Carrillo
Nombre Estudiante 2: JULIANA MARIA ACERO CARRILLO
Pregunta 2: ¿Qué se conoce como lenguaje SQL?
Respuesta:
Structured Query Language (SQL) es un lenguaje de programación
diseñado para el acceso a Sistemas de Gestión de Base de Datos
Relacionales (SGBDR) y es usado en la mayoría de dichos sistemas
en la actualidad, pues facilita realizar operaciones en minutos sin que
signifique inversión en tiempo y dinero para las empresas. Es un
lenguaje de cuarta generación pues en él se indica que información
se desea obtener o procesar más no cómo se debe realizar el proceso,
pues el sistema decide cual es la opción más eficiente para procesar
u obtener la información.

Este lenguaje fue desarrollado por la empresa IBM a finales de 1970,


y las organizaciones ANSI e ISO publicaron la primera versión del
estándar que debía ser usado por las implementaciones de SQL, y el
cual ha tenido múltiples modificaciones y/o adiciones, pero
actualmente no han sido adoptadas en su totalidad por ninguna de
las empresas reconocidas que comercializan productos desarrollados
en este lenguaje.

SQL trabaja mediante 4 sentencias de manipulación de datos; la


primera es select la cual permite consultar la información de la base
de datos, la segunda es insert la cual permite insertar datos en la
base de datos, la tercera es update la cual permite modificar los datos
existentes en la base de datos; y la cuarta es delete, que nos permite
borrar la información almacenada en la base de datos.
Comentario: El lenguaje SQL se encuentra en todos los ámbitos
informáticos, así como el aire está presente para nosotros, es un
elemento esencial que permite crear los sistemas robustos que hoy
conocemos, el fácil de aprendizaje y permite utilizarlo en diferentes
plataformas.
Autor del comentario: Harold Alberto Bautista Agudelo
Nombre Estudiante 3: WILDER ALFREDO ARIAS ARIAS
Pregunta 3: ¿Cuál es la diferencia entre el lenguaje de definición de
datos y el lenguaje de manipulación de datos?
Respuesta:
El “Lenguaje de definición de datos” es usado para modificar la
estructura de la base de datos, permitiendo realizar la creación de
tablas, agregar o modificar columnas existentes, igualmente
permite eliminar detalles de la tabla, el “lenguaje de manipulación
de datos” es generalmente utilizado para la administración de los
datos, dentro de sus funciones más comunes tenemos actualizar,
eliminar o insertar datos en la base de datos, de acuerdo con lo
anterior la diferencia principal entre ambos leguajes corresponde a
que el primero permite cambiar la estructura de la base de datos y
el segundo es usado regularmente para la administración de los
datos.
Para el caso del “Lenguaje de definición de datos” las sentencias
más comunes en su uso son: CREATE (sentencia que permite crear
tablas, vistas, etc.), ALTER (sentencia que permite modificar la
estructura de la base de datos) y DROP (sentencia que permite
eliminar objetos de la estructura)

Ej: CREATE TABLE Persons (


PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

y para el caso del “Lenguaje de manipulación de datos” SELEC


(sentencia que permite ejecutar consultas sobre los datos), INSERT
(sentencia que permite insertar valores), UPDATE (sentencia que
permite modificar los valores que tengan asociados uno o varios
registros) y DELETE (sentencia que permite realizar la eliminación
de los valores de una tabla).
Ej: UPDATE
Sales_Import
SET
Sales_Import.AccountNumber = RAN.AccountNumber
FROM
Sales_Import SI
INNER JOIN
RetrieveAccountNumber RAN
ON
SI.LeadID = RAN.LeadID;

Comentario: …….
Autor del comentario:
2. Diseño modelo Entidad Relación y modelo Relacional Cod_curso

- Modelo de Datos Entidad Relación – Según Peter Chen Id_zona


Credito
- Fecha_final Fecha_inicio Cod_esc
Hora_final
Id_cent
Nom_cur t
Fecha_Real

1:M Semestre
Hora_inicio M:1 M:M
Cod_periodo
Id_estado
0000
Doc_rol
Preg_
Cod_sesion 2
Preg_3 M:M
Preg_1 Cod_curso

Preg_4
Doc_rol Res_4
Id_progra

Cod_curso Res_1
Cod_sesion

Cod_sesion Res_2 Tipo_estado


M:M

Cod_periodo Res_3
0000 Prim_nom
Nom_sesion
Cod_sesion Cod_sesion
Seg_nom
Doc_rol
M:M
Prim_nomb
Perfil
Prim_apel Id_progra Num_asist
Id_zona
Doc_rol
Seg_nomb Cod_esc
Seg_apel M:1
1:M
Cod_ciudad M:1
Observacion
Prim_apel Id_cent
Genero M:1

Cod_escuela M:1
Seg_apel Rol
M:1
1:M 1:M Nom_zona

Nom_cent
Id_zona
Id_progra
Nom_esc Id_cent
Nom_progra
Cod_esc
Abr_esc
- Técnicas de normalización

Se tiene la siguiente tabla para la entidad Curso:


CURSO
COD_CURSO NOM_CURSO CREDITOS SEMESTRE COD_ESCUELA ID_ZONA ID_CENTRO
300110 BASE DE DATOS AVANZADA 3 9 5 7 40
300110 BASE DE DATOS AVANZADA 3 9 5 9 15
300112 BASES DE DATOS 3 7 5 7 40

Debido a que se repiten los nombres del curso, pues un mismo curso
puede estar asignado a diferentes zonas y centros, se aplica el segundo
nivel de normalización creando unas nuevas tablas con una clave
externa que las relacione con la tabla Curso:
CURSO
COD_CURSO NOM_CURSO CREDITOS SEMESTRE COD_ESCUELA
300110 BASE DE DATOS AVANZADA 3 9 5
300112 BASES DE DATOS 3 7 5

ID_CURZO COD_CURSO ID_ZONA


1001 300110 7
1002 300110 9
1003 300112 7

ID_CURCEN COD_CURSO ID_CENTRO


001 300110 40
002 300110 15
003 300112 40

Se realiza el mismo proceso para la tabla Estados, pues existen valores


duplicados debido a que un rol puede tener diferentes Estados en
diferentes periodos y un rol puede estar en diferente estado para un
programa diferente en periodos diferentes:
ESTADOS
ID_ESTADO DOC_ROL COD_CURSO COD_PROGRAMA TIPO_ESTADO
01 1015416917 300110 61 MATRICULADO
02 1015416917 300111 78 RETIRADO
03 1015416917 300111 78 GRADUADO

Se procede a crear otra tabla que especifique la relación entre


Estados y el Rol con una clave externa:
ID_ROLES ID_ESTADO DOC_ROL COD_CURSO COD_PERIODO
1 01 1015416917 300110 16-04
2 02 1015416917 300110 8-03
3 03 1015416917 300112 16-04

Y aplicando el tercer nivel de normalización se elimina el campo


Programa, que no tiene relación alguna con Estados:
ESTADOS
ID_ESTADO TIPO_ESTADO
01 MATRICULADO
02 INSCRITO
03 RETIRADO
04 GRADUADO

Ahora se aplica nuevamente el segundo nivel de normalización a la


tabla Sesión, creando una tabla que relacione Sesión con periodo,
mediante una clave externa:
SESION
COD_SESION NOM_SESION COD_CURSO COD_PERIODO
01123 TECNICAS NORMALIZACION 300110 16-04
01124 DISEÑO BASE DE DATOS 300111 8-03
01125 TECNICAS NORMALIZACION 300110 8-03

ID_SESIOPER COD_SESION COD_PERIODO


112 01123 16-04
113 01124 8-03
114 01125 8-03

Quedando como resultado la siguiente tabla Sesión:


SESION
COD_SESION NOM_SESION COD_CURSO
01123 TECNICAS NORMALIZACION 300110
01124 DISEÑO BASE DE DATOS 300111

Por último, se procede a modificar la tabla Asistencia, donde primero


se colocará un id para cada Asistencia diligenciada:
ASISTENCIA
COD_SESION COD_ESCUELA DOC_ROL PRIM_NOMB SEG_NOMB PRIM_APEL SEGU_APEL COD_CIUDAD
01123 5 1015416917 JULIANA MARIA ACERO CARRILLO 01
01124 5 1015416917 JULIANA MARIA ACERO CARRILLO 01

ASISTENCIA
ID_ASISTEN COD_SESION COD_ESCUELA DOC_ROL PRIM_NOMB SEG_NOMB PRIM_APEL SEGU_APEL COD_CIUDAD
001 01123 5 1015416917 JULIANA MARIA ACERO CARRILLO 01
002 01124 5 1015416917 JULIANA MARIA ACERO CARRILLO 01

Y aplicando el tercer nivel de normalización, se procede a eliminar los


campos que no tienen relación directa con Asistencia:
ROLASISTENCIAROL
ID_ASISTEN COD_ESCUELA
ID_ASISTEN COD_SESION COD_SESION COD_ESCUELA
DOC_ROL DOC_ROL
001 01123
001 01123 5 1015416917 5 1015416917
002 01124
002 01124 5 1015416917 5 1015416917

Además, el campo Ciudad se coloca en la tabla Rol, pues tampoco tiene


relación directa con Asistencia, los campos de nombre y apellidos del
rol ya se encuentran en la tabla Rol:
ROL
DOC_ROL PRIM_NOMB SEG_NOMB PRIM_APEL SEGU_APEL GENERO PERFIL ID_PROGRAM COD_ESCUELA ID_CENTRO ROL CORREO CELULAR
1015416917 JULIANA MARIA ACERO CARRILLO F N/A 78 5 40 Estudiante jumacecax@gmail.com 3045520513
19287435 LUIS EDUARDO ROJAS CANO M PSICOLOGO 78 N/A 15 Docente luis.cano@hotmail.com 3052251128
1022327422 LORENA RUIZ LOPEZ F N/A 61 1 15 Estudiante lorulo89@yahoo.es 3025886694
19287435 LUIS EDUARDO ROJAS CANO M PSICOLOGO 12 4 15 Estudiante luis.cano@hotmail.com 3052251128

Ahora como se evidencia, en la tabla Rol también se presenta


duplicidad en la información, pues un docente puede a la vez ser
estudiante en un programa, por lo tanto, se aplica el segundo nivel de
normalización:
ROL
DOC_ROL PRIM_NOMB SEG_NOMB PRIM_APEL SEGU_APEL GENERO PERFIL COD_ESCUELA ID_CENTRO ROL CORREO CELULAR CIUDAD
1015416917 JULIANA MARIA ACERO CARRILLO F N/A 5 40 Estudiante jumacecax@gmail.com 3045520513 Bogotá
19287435 LUIS EDUARDO ROJAS CANO M PSICOLOGO N/A 15 Docente luis.cano@hotmail.com 3052251128 Girardot
1022327422 LORENA RUIZ LOPEZ F N/A 1 15 Estudiante lorulo89@yahoo.es 3025886694 Tunja

ID_ROLPRO DOC_ROL ID_PROGRAM


110 1015416917 78
111 19287435 78
112 1022327422 61
113 19287435 12
- Modelo de Datos Relacional – Según Edgar Frank Codd
3. Desarrollo de la base de datos relacional

Nombre Estudiante 1: JULIANA MARÍA ACERO CARRILLO


CREATE TABLE "ESTADO"
( "ID_ESTADO" NUMBER(2,0) NOT NULL ENABLE,
"NOM_ESTADO" VARCHAR2(11) NOT NULL ENABLE,
CONSTRAINT "ESTADO_PK" PRIMARY KEY ("ID_ESTADO")
USING INDEX ENABLE
)
/

CREATE OR REPLACE EDITIONABLE TRIGGER "BI_ESTADO"


before insert on "ESTADO"
for each row
begin
if :NEW."ID_ESTADO" is null then
select "ESTADO_SEQ".nextval into :NEW."ID_ESTADO" from sys.dual;
end if;
end;

/
ALTER TRIGGER "BI_ESTADO" ENABLE
/
***********************************
Script DDL
CREATE TABLE "CURSO"
( "COD_CURSO" NUMBER(6,0) NOT NULL ENABLE,
"NOM_CURSO" VARCHAR2(35) NOT NULL ENABLE,
"CREDITOS" NUMBER(1,0) NOT NULL ENABLE,
"SEMESTRE" NUMBER(2,0) NOT NULL ENABLE,
"COD_ESCUELA" NUMBER(20,0) NOT NULL ENABLE,
CONSTRAINT "CURSO_PK" PRIMARY KEY ("COD_CURSO")
USING INDEX ENABLE
)
/
ALTER TABLE "CURSO" ADD CONSTRAINT "CURSO_FK" FOREIGN KEY
("COD_CURSO")
REFERENCES "ESCUELA" ("COD_ESCUELA") ENABLE
/

CREATE OR REPLACE EDITIONABLE TRIGGER "BI_CURSO"


before insert on "CURSO"
for each row
begin
if :NEW."COD_CURSO" is null then
select "CURSO_SEQ".nextval into :NEW."COD_CURSO" from sys.dual;
end if;
end;

/
ALTER TRIGGER "BI_CURSO" ENABLE
/
************************************
Script DDL
CREATE TABLE "PERIODO"
( "COD_PERIODO" VARCHAR2(5) NOT NULL ENABLE,
"FECHA_INICIO" DATE NOT NULL ENABLE,
"FECHA_FINAL" DATE NOT NULL ENABLE,
CONSTRAINT "PERIODO_PK" PRIMARY KEY ("COD_PERIODO")
USING INDEX ENABLE
)
/

CREATE OR REPLACE EDITIONABLE TRIGGER "BI_PERIODO"


before insert on "PERIODO"
for each row
begin
if :NEW."COD_PERIODO" is null then
select "PERIODO_SEQ".nextval into :NEW."COD_PERIODO" from
sys.dual;
end if;
end;

/
ALTER TRIGGER "BI_PERIODO" ENABLE
/
************************************
CREATE TABLE "SESION"
( "COD_SESION" NUMBER(5,0) NOT NULL ENABLE,
"NOM_SESION" VARCHAR2(50) NOT NULL ENABLE,
CONSTRAINT "SESION_PK" PRIMARY KEY ("COD_SESION")
USING INDEX ENABLE
)
/
ALTER TABLE "SESION" ADD CONSTRAINT "SESION_FK" FOREIGN KEY
("COD_SESION")
REFERENCES "CURSO" ("COD_CURSO") ENABLE
/

CREATE OR REPLACE EDITIONABLE TRIGGER "BI_SESION"


before insert on "SESION"
for each row
begin
if :NEW."COD_SESION" is null then
select "SESION_SEQ".nextval into :NEW."COD_SESION" from sys.dual;
end if;
end;

/
ALTER TRIGGER "BI_SESION" ENABLE
/
Script DML
INSERT INTO ESTADO (ID_ESTADO,NOM_ESTADO)
VALUES ('1','MATRICULADO');
****************************************
INSERT INTO ESCUELA
VALUES ('1','JAyG','JOSE ACEVEDO Y GOMEZ');
****************************************
INSERT INTO CURSO
VALUES ('301125','BASE DE DATOS AVANZADA','3','9','1');
****************************************
INSERT INTO PERIODO
VALUES ('16-06','11/24/2020','04/06/2021');
****************************************
INSERT INTO SESION
VALUES ('00001','LENGUAJE DE CONSULTA ESTRUCTURADO
SQL','301125');
Nombre Estudiante 2: HAROLD ALBERTO BAUTISTA AGUDELO
Script DDL
CREATE TABLE informe (
cod_sesion SMALLINT NOT NULL,
num_asistencia SMALLINT NOT NULL,
observacion VARCHAR2(80),
rol_doc_rol INTEGER NOT NULL
);

ALTER TABLE informe ADD CONSTRAINT informe_pk PRIMARY KEY (


cod_sesion );

ALTER TABLE informe


ADD CONSTRAINT informe_rol_fk FOREIGN KEY ( rol_doc_rol )
REFERENCES rol ( doc_rol );

CREATE OR REPLACE TRIGGER fkntm_informe BEFORE


UPDATE OF rol_doc_rol ON informe
BEGIN
raise_application_error(-20225, 'Non Transferable FK constraint on
table Informe is violated');
END;
/
************************************
CREATE TABLE programacion (
fecha_real DATE NOT NULL,
hora_inicio DATE NOT NULL,
hora_final DATE NOT NULL,
cod_sesion SMALLINT NOT NULL,
sesion_cod_sesion SMALLINT NOT NULL
);

ALTER TABLE programacion


ADD CONSTRAINT programacion_sesion_fk FOREIGN KEY (
sesion_cod_sesion )
REFERENCES sesion ( cod_sesion );

CREATE OR REPLACE TRIGGER fkntm_programacion BEFORE


UPDATE OF sesion_cod_sesion ON programacion
BEGIN
raise_application_error(-20225, 'Non Transferable FK constraint on
table Programacion is violated');
END;
/
************************************
CREATE TABLE "ASISTENCIA"
( "ID_ASISTEN" NUMBER(20,0),
"COD_SESION" NUMBER(20,0) NOT NULL ENABLE,
"DOC_ROL" NUMBER(20,0) NOT NULL ENABLE,
CONSTRAINT "ASISTENCIA_PK" PRIMARY KEY ("ID_ASISTEN")
USING INDEX ENABLE
)
/
ALTER TABLE "ASISTENCIA" ADD CONSTRAINT "ASISTENCIA_ROL_FK"
FOREIGN KEY ("DOC_ROL")
REFERENCES "ROL" ("DOC_ROL") ENABLE
/
ALTER TABLE "ASISTENCIA" ADD CONSTRAINT
"ASISTENCIA_SESION_FK" FOREIGN KEY ("COD_SESION")
REFERENCES "SESION" ("COD_SESION") ENABLE
/

CREATE OR REPLACE EDITIONABLE TRIGGER "BI_ASISTENCIA"


before insert on "ASISTENCIA"
for each row
begin
if :NEW."ID_ASISTEN" is null then
select "ASISTENCIA_SEQ".nextval into :NEW."ID_ASISTEN" from
sys.dual;
end if;
end;

/
ALTER TRIGGER "BI_ASISTENCIA" ENABLE
/************************************
CREATE TABLE evaluacion (
cod_sesion SMALLINT NOT NULL,
doc_rol INTEGER NOT NULL,
pregunta_1 VARCHAR2(50) NOT NULL,
pregunta_2 VARCHAR2(50) NOT NULL,
pregunta_3 VARCHAR2(50) NOT NULL,
pregunta_4 VARCHAR2(50) NOT NULL,
respuesta_1 VARCHAR2(50) NOT NULL,
respuesta_2 VARCHAR2(50) NOT NULL,
respuesta_3 VARCHAR2(50) NOT NULL,
respuesta_4 VARCHAR2(50) NOT NULL,
sesion_cod_sesion SMALLINT NOT NULL,
rol_doc_rol INTEGER NOT NULL
);

CREATE UNIQUE INDEX evaluacion__idx ON


evaluacion (
sesion_cod_sesion
ASC );

ALTER TABLE evaluacion


ADD CONSTRAINT evaluacion_rol_fk FOREIGN KEY ( rol_doc_rol )
REFERENCES rol ( doc_rol );

ALTER TABLE evaluacion


ADD CONSTRAINT evaluacion_sesion_fk FOREIGN KEY (
sesion_cod_sesion )
REFERENCES sesion ( cod_sesion );

CREATE OR REPLACE TRIGGER fkntm_evaluacion BEFORE


UPDATE OF rol_doc_rol, sesion_cod_sesion ON evaluacion
BEGIN
raise_application_error(-20225, 'Non Transferable FK constraint on
table Evaluacion is violated');
END;
/
Script DML
INSERT INTO CIUDAD (ID_CIUDAD,NOM_CIUDAD)
VALUES ('1','Bogota');
INSERT INTO ROL
(DOC_ROL,PRIM_NOM,SEGU_NOM,PRIM_APEL,SEGU_APEL,GENERO,PERF
IL,COD_ESCUELA,ID_CENTRO,ROL,CORREO,ID_CIUDAD,COD_SESION)
VALUES
('1','Miguel','Angel','Espitia','Garzon','M','Universitario','2','1','Docente','inf
o@info.com','1','1');

INSERT INTO ASISTENCIA (ID_ASISTEN,COD_SESION,DOC_ROL)


VALUES ('1','1','1');

INSERT INTO EVALUACION


(DOC_ROL,COD_SESION,PREGUNTA_1,PREGUNTA_2,PREGUNTA_3,PREG
UNTA_4,RESPUESTA_1,RESPUESTA_2,RESPUESTA_3,RESPUESTA_4)
VALUES ('1','1','Definación SQL','Script de Consulta','Modificación de
datos','Consultas SQL','Bueno','Malo','Regular','Bueno');

Nombre Estudiante 3: Wilder Alfredo Arias Arias

CREATE table “PROGRAMA” (


“ID_PROGRAMA” NUMBER(20) NOT NULL,
“NOM_PROGRAMA” VARCHAR2(30),
constraint “PROGRAMA_PK” primary key (“ID_PROGRAMA”)
)
/
constraint “PROGRAMA_SEQ”
/
CREATE trigger “BI_PROGRAMA”
before insert on “PROGRAMA”
for each row
begin
if :NEW. “ID.PROGRAMA” is null then
select “PROGRAMA.SEQ ”.nextval into :NEW. “ID_PROGRAMA” from
sys.dual;
end if;
end;
/

***********************************
CREATE table “ESCUELA” (
“COD_ESCUELA” NUMBER(20) NOT NULL,
“ABREV_ESCUELA” VARCHAR2(8),
“NOM_ESCUELA” VARCHAR2(30),
constraint “ESCUELA_PK” primary key (“COD_ESCUELA”)
)
/
CREATE sequence “ESCUELA_SEQ”
/
CREATE trigger “BI_ESCUELA”
before insert on “PROGRAMA”
for each row
begin
if :NEW. “COD_ESCUELA” is null then
select “ESCUELA.SEQ ”.nextval into :NEW. “COD_ESCUELA” from sys.dual;
end if;
end;
/

************************************
CREATE table “ZONA” (
“ID_ZONA” NUMBER(20) NOT NULL,
“NOM_ZONA” VARCHAR2(15),
constraint “ZONA_PK” primary key (“ID_ZONA”)
)
/
CREATE sequence “ZONA_SEQ”
/
CREATE trigger “BI_ZONA”
before insert on “ZONA”
for each row
begin
if :NEW. “COD_ZONA” is null then
select “ZONA.SEQ ”.nextval into :NEW. “COD_ZONA” from sys.dual;
end if;
end;
/

************************************
CREATE table “CENTRO” (
“ID_CENTRO” NUMBER(20) NOT NULL,
“NOM_CENTRO” VARCHAR2(20),
“ID_ZONA” NUMBER,
constraint “CENTRO_PK” primary key (“ID_CENTRO”)
)
/
CREATE sequence “CENTRO_SEQ”
/
CREATE trigger “BI_CENTRO”
before insert on “CENTRO”
for each row
begin
if :NEW. “COD_CENTRO” is null then
select “CENTRO.SEQ ”.nextval into :NEW. “COD_CENTRO” from sys.dual;
end if;
end;
/
ALTER TABLE “CENTRO” ADD CONSTRAINT “CENTRO_FK”
FOREING KEY (“ID_ZONA”)
REFERENCES “ZONA” (“ID_ZONA”)
/

Script DML
INSERT INTO PROGRAMA (NOM_PROGRAMA)
VALUES ('Ingeniería de Sistemas');
************************************
INSERT INTO ESCUELA (ABREV_ESCUELA,NOM_ESCUELA)
VALUES ('ECBTI','Escuela Ciencias básicas');
************************************
INSERT INTO ZONA (NOM_ZONA)
VALUES ('CENTRO');
************************************
INSERT INTO CENTRO (NOM_CENTRO, ID_ZONA)
VALUES (' UDR Chipaque','1');
************************************
INSERT INTO INFORME (NUM_ASISTENCIA, OBSERVACION)
VALUES ('35','Informe de asistencia de estudiantes a la sesión');

4. Consultas con JOINS

Nombre Estudiante 1: JULIANA MARÍA ACERO CARRILLO


Código - [INNER] JOIN ... ON:
SELECT S.NOM_SESION,C.NOM_CURSO
FROM SESION S JOIN CURSO C ON S.COD_CURSO =
C.COD_CURSO;
Resultado de la consulta:
NOM_SESION,"NOM_CURSO"
LENGUAJE DE CONSULTA ESTRUCTURADO SQL,"BASE DE DATOS
AVANZADA"
Nombre Estudiante 2: Wilder Alfredo Arias Arias
Código - LEFT [OUTER] JOIN:

SELECT d.NOM_CURSO,
d.CREDITOS
FROM CURSO d
LEFT OUTER JOIN ESCUELA e ON d.COD_ESCUELA =
e.COD_ESCUELA
WHERE d.COD_ESCUELA = 1
ORDER BY d.NOM_CURSO, d.CREDITOS;
Resultado de la consulta:

NOM_CURSO CREDITOS
BASE DE DATOS AVANZADA 3
VISUAL BASIC 3

Nombre Estudiante 3: Harold Alberto Bautista Agudelo


Código- RIGHT [OUTER] JOIN:
SELECT R.PRIM_NOM,
A.DOC_ROL
FROM ROL R
LEFT OUTER JOIN ASISTENCIA A ON R.DOC_ROL = A.DOC_ROL
WHERE A.DOC_ROL = 1
ORDER BY R.DOC_ROL;

Resultado de la consulta:
PRIM_NOM DOC_ROL
Miguel 1

5. Consultas con funciones

Nombre Estudiante 1: JULIANA MARÍA ACERO CARRILLO


Código - COUNT (expresión):
SELECT COUNT(*) AS TOTAL_ESCUELAS
FROM ESCUELA;
Resultado de la consulta:
TOTAL_ESCUELAS
1
Nombre Estudiante 2: Wilder Alfredo Arias Arias
Código - SUM (expresión):

SELECT SEMESTRE,
SUM (CREDITOS)
FROM CURSO
GROUP BY SEMESTRE;

Resultado de la consulta:

SEMESTRE SUM(CREDITOS)
8 5
9 6

Nombre Estudiante 3: Harold Alberto Bautista Agudelo


Código - AVG (expresión):
SELECT AVG(NUM_ASISTENCIA) AS Promedio_Asistencia
FROM INFORME;
Resultado de la consulta:
PROMEDIO_ASISTENCIA
45,5
Nombre Estudiante 4: Elimine el texto y escriba el nombre
Código - MIN (expresión):

Resultado de la consulta:

Nombre Estudiante 5: Elimine el texto y escriba el nombre


Código - MAX (expresión):

Resultado de la consulta:

6. Evidencias de la participación en el foro


Se espera que cada estudiante presente las evidencias de su participación
en el foro con relación al Desarrollo de la Unidad 1 - Fase 2 - Diseño, al igual
que comentarios significativos a los aportes de los demás compañeros del
grupo.

Nombre Estudiante 1: JULIANA MARÍA ACERO CARRILLO


Imagen 1 Imagen 2

Nombre Estudiante 2: Wilder Alfredo Arias Arias


Imagen 1 Imagen 2

Nombre Estudiante 3: Harold Alberto Bautista Agudelo


Imagen 1 Imagen 2
CONCLUSIONES

El modelo relacional permite diseñar de manera lógica una base de datos,


permitiendo que la creación de cada una de las entidades sea más
sencilla, además de garantizar que la base de datos almacene y
procese la información de forma correcta, sin presentarse pérdida en
la misma o duplicidad de datos, último proceso que también es
corregido mediante las técnicas de normalización.

El lenguaje SQL es de fácil comprensión, casi todas las sentencias tienen una
forma básica, empiezan por un verbo que corresponde a una palabra
reservada que describe lo que va a realizar la tarea (ejemplo SELECT),
luego continua una o más cláusulas que explican más detalles acerca
de la sentencia y que también empiezan con una palabra clave, (por
ejemplo, FROM o WHERE). Para finalizar se enuncian los nombres de
las tablas, de las columnas y expresiones o valores que se desean
consultar, por lo que el anterior trabajo permitirá poner en práctica y
sumar experiencia en SQL.
BIBLIOGRAFÍA

Database Relational. (s. f.). Database Relational. Recuperado 13 de


septiembre de 2020, de https://www.oracle.com/co/database/what-
is-a-relational-database/

Universidad Peruana de Ciencias Aplicadas. (s. f.). Normalización de Bases


de Datos y Técnicas de diseño. Recuperado de
https://www.cs.upc.edu/~bcasas/docencia/pfc/NormalitzacioBD.pdf

Oracle-Base. (s. f.). [INNER] JOIN ... ON. Recuperado de https://oracle-


base.com/articles/misc/count-analytic-function

Oracle-Base. (s. f.). COUNT Analytic Function. Recuperado de


https://oracle-base.com/articles/misc/sql-for-beginners-joins#inner-
join-on

Das könnte Ihnen auch gefallen