Title | Fase 2 -Diseño grupo 301125 A 952-convertido |
---|---|
Author | David Teran |
Course | Diseño de Proyectos |
Institution | Universidad Nacional Abierta y a Distancia |
Pages | 27 |
File Size | 1.8 MB |
File Type | |
Total Downloads | 155 |
Total Views | 196 |
UNIDAD 1: LENGUAJE DE CONSULTA ESTRUCTURADOSQL FASE 2 - DISEÑOPARTICIPANTES:CC: 27090383 – ANA MILENA ARANDA CUASPACC: 1102355487- SERGIO ANDRES JAIMESGRUPO No. 301125A_Tutor: JHONATAN CAMILO DAVILAUniversidad Nacional Abierta y a Distancia – UNAD Escuela Ciencias básicas, tecnología e ingeniería Pr...
UNIDAD 1: LENGUAJE DE CONSULTA ESTRUCTURADO SQL FASE 2 - DISEÑO
PARTICIPANTES: CC: 27090383 – ANA MILENA ARANDA CUASPA CC: 1102355487- SERGIO ANDRES JAIMES GRUPO No. 301125A_952
Tutor: JHONATAN CAMILO DAVILA
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 Colombi a 2021
TABLA DE CONTENIDO GRUPO No. 301125A_952 1.
INTRODUCCIÓN
2.
OBJETIVOS
1 3 4
1.
Objetivo General
4
2.
Objetivos Específicos
4
3.
RESULTADO
5
1.
Selección y respuesta de la pregunta motivadora
5
2.
Diseño modelo Entidad Relación y modelo Relacional
1
-
Modelo de Datos Entidad Relación – Según Peter Chen
1
-
Técnicas de normalización
1
-
Modelo de Datos Relacional – Según Edgar Frank Codd
1
3.
Desarrollo de la base de datos relacional
1
4.
Consultas con JOINS
10
5.
Consultas con funciones
11
Evidencias de la participación en el foro
14
6. 4.
CONCLUSIONES
15
5.
BIBLIOGRAFÍA
16
1. INTRODUCCIÓN
El SQL (Structured query language), lenguaje de consulta estructurado, es un lenguaje surgido de un proyecto de investigación de IBM para el acceso a bases de datos relacionales. Actualmente se ha convertido en un estándar de lenguaje de bases de datos, y la mayoría de los sistemas de bases de datos lo soportan, desde sistemas para ordenadores personales, hasta grandes ordenadores. Por supuesto, a partir del estándar cada sistema ha desarrollado su propio SQL que puede variar de un sistema a otro, pero con cambios que no suponen ninguna complicación para alguien que conozca un SQL concreto. Como su nombre indica, el SQL nos permite realizar consultas a la base de datos. Pero el nombre se queda corto ya que SQL además realiza funciones de definición, control y gestión de la base de datos.
2. OBJETIVOS
1.
Objetivo General
● Crear consultas y funciones en base de datos relacionales a través del uso del Lenguaje SQL
2.
Objetivos Específicos
● Analizar los requerimientos del proyecto de la Universidad Nacional Abierta y a Distancia UNAD. ● Crear una base de datos relacional para un sistema integrado. ● Realizar la definición y descripción de las entidades a partir del proyecto propuesto. ● Insertar registros en la Base de Datos haciendo uso del lenguaje de modificación de datos. ● Realizar una consulta por cada uno de los siguientes Join. ● Codificar las sentencias para cada una de las siguientes funciones.
3. RESULTADO 1. Selección y respuesta de la pregunta motivadora Nombre Estudiante 1: Sergio Andrés Jaimes Pregunta 1: ¿Qué es una base de datos relacional? Respuesta: Como su nombre lo indica es una base de datos en la que las tablas o entidades con nombres únicos están relacionadas entre sí por medio de claves o identificadores únicos para cada fila de cada tabla y cuya integridad depende de que se cumplan dos reglas: “La Regla de Integridad de Entidades especifica que ninguna de las columnas que componen la clave primaria de una tabla puede contener valores nulos. La Regla de Integridad Referencial especifica que las claves ajenas o bien son completamente nulos o bien contienen valores tales que coinciden con algún valor de la clave primaria a la que referencian.” (Quintana, 2010, p. 15), garantizando con esto que las relaciones entre las tablas se mantengan y con ello evitar que se presenten inconsistencias con la información almacenada, como medida de seguridad se pueden establecer restricciones en las relaciones para evitar la eliminación de una fila si su clave primaria hace parte de una clave ajena en otra tabla, por ejemplo si tenemos una tabla “tipoDocumento” con el tipo de documento cédula y su clave primaria 1, si a su vez un usuario tiene una relación con dicha tabla para determinar el tipo de documento de los usuarios y algún usuario tiene tipo de documento cédula, no debería permitirse la eliminación de dicho tipo de documento en la tabla con la clave primaria. Comentario: Buenas tardes compañero, me parece interesante la socialización de del tema escogido, quiero retroalimentarlo con mi aporte; donde encuentro unos beneficios de las bases de datos relacionales donde las organizaciones de todo tipo y tamaño utilizan el modelo relacional simple pero poderoso para una amplia variedad de necesidades de información. Las bases de datos relacionales se utilizan para hacer seguimiento de los inventarios, procesar transacciones de comercio electrónico, administrar grandes cantidades de información de clientes de misión crítica y mucho más. Se puede considerar una base de datos relacional para cualquier necesidad de información en la que los puntos de datos se relacionen entre sí y se deban administrar de una manera segura, consistente y basada en reglas. Autor del comentario: Ana Milena Aranda Cuaspa
Nombre Estudiante 2: Ana Milena Aranda Cuaspa Pregunta 2: ¿Qué se conoce como lenguaje SQL? Respuesta: El lenguaje de consulta estructurado popularmente conocido por sus siglas en inglés como SQL, es un lenguaje de programación que ayuda a solucionar problemas o relacionados con la definición, la manipulación e integridad de la información representada por los datos que se almacenan en las bases de datos. Algunos aspectos de SQL están basados en el cálculo relacional, algunos en el álgebra relacional que provienen del modelo relacional y otros a ninguno de los dos sino que son parte de SQL. El lenguaje SQL se basa en varios elementos para la comodidad de los desarrolladores, todos los comandos del lenguaje necesarios en los correspondientes sistemas de gestión de bases se ejecutan a través de una interfaz específica de línea de comandos SQL (command-line interface o cli). Donde maneja: Cláusulas, Expresiones, Predicados, Querys, Comandos, Consultas SQL, From, Where, Order by. SQL posee comandos referentes a: Un lenguaje de definición de datos o ddl en inglés, que permite: ● La creación de la estructura o esquema de base de datos. ● La modificación de dicha estructura. ● Un lenguaje de manipulación de datos o dml en inglés, que hace posible: ● La inserción de datos en tablas. ● Las consultas sobre los datos de estas tablas. ● La actualización de los datos contenidos en estas tablas. ● La eliminación de los registros de estas tablas. ● Peticiones de información más complejas que incluyen joins y Subconsultas. Comentario: El lenguaje SQL es un lenguaje de gestión de base de datos que busca como todo lenguaje estructurar los parámetros para manipular bases de datos tratando de establecer un estándar en las sentencias que se utilizan; una de sus grandes ventajas es la difusión y en consecuencia el uso del mismo en pequeños y grandes sistemas de información y a la hora de implementarlo solo debemos buscar la variante que más se acople a nuestras necesidades, en lo personal considero que PostgreSQL es un motor de base de datos robusto que conserva los estándares del SQL. Autor del comentario: Sergio Andrés Jaimes
2. Diseño modelo Entidad Relación y modelo Relacional -
Modelo de Datos Entidad Relación – Según Peter Chen
-
Técnicas de normalización
Normalización Dentro de la Normalización tenemos 3 Formas formales que se describen a continuación. PRIMERA FORMA NORMAL Como podemos darnos cuenta debemos reducir esta tabla e identificar los grupos de repetición que se presentan en el mismo registro. Núm. Materia 123
Programa
Programación Web
234
Sistemas
3176159751
Programación Visual
234
Sistemas
3147937996
Base de datos
123
Sistemas
Matricula
Nombre
Dirección
Teléfono
Curso
1
Sergio
3176159751
Base de datos
1
Sergio
3176159751
1
Sergio
2
Ana
Calle séptima Manizales Calle séptima Manizales Calle séptima Manizales Kra 24 Pasto
Sistemas
Separamos y realizamos 2 tablas, con el campo de matrícula relaciono las dos tablas para que no queden separadas, ni se pueda perder información. Matricula
Nombre
Dirección
Teléfono
Programa
1
Sergio
3176159751
Sistemas
2
Ana
Calle séptima Manizales Kra 24 Pasto
3147937996
Sistemas
Matricula
Curso
1
Base de datos Programación Web Programación Visual Base de datos
1 1 2
Núm. Materia 123 234 234 123
Identificamos las dependencias funcionales, identificamos las llaves primarias que en este caso serían matricula y numero de materia. Matricula funcionaria como una clave foránea y número de matrícula como una clave primaria.
SEGUNDA FORMA FORMAL
Para estar en Segunda Forma Normal: ● La tabla debe estar en primera forma normal ● Debe identificar las dependencias funcionales y transitivas.
Matricula
Nombre
Dirección
Teléfono
Programa
1
Sergio
3176159751
Sistemas
2
Ana
Calle séptima Manizales Kra 24 Pasto
3147937996
Sistemas
Matricula 1 1 1 2 Curso Base de datos Programación Web Programación Visual Base de datos
Núm. Materia 123 234 234 123
Núm. Materia 123 234 234 123
TERCER FORMA NORMAL
Tenemos una nueva tabla que es Programa que tiene una llave primaria que es número de materia, con esto estamos evitando redundancia y estamos reduciendo el espacio de almacenamiento y podemos comprobar que no tenemos perdida de información con una tabla intermedia que s la tabla matricula, así optimizamos la base de datos, porque ya no hay repetición y los datos siguen relacionados.
Matricula
Nombre
Dirección
Teléfono
1
Sergio
3176159751
2
Ana
Calle séptima Manizales Kra 24 Pasto
Núm. Materia 1234
3147937996
1234
Matricula 1 1 1 2
Curso Base de datos Programación Web Programación Visual Base de datos
Núm. de Materia 1234 6789
Núm. Materia 123 234 234 123
Núm. Materia 123 234 234 123
Programas Sistemas Mecatrónica
-
Modelo de Datos Relacional – Según Edgar Frank Codd
3. Desarrollo de la base de datos relacional Nombre Estudiante 1: Sergio Andrés Jaimes Script DDL CREATE TABLE departamento ( iddepartamento INTEGER NOT NULL, nombre VARCHAR2(30) ); ALTER TABLE departamento ADD CONSTRAINT departamento_pk PRIMARY KEY ( iddepartamento ); CREATE TABLE municipio ( idmunicipio INTEGER NOT NULL, nombre VARCHAR2(30), departamento_iddepartamento INTEGER NOT NULL ); ALTER TABLE municipio ADD CONSTRAINT municipio_pk PRIMARY KEY ( idmunicipio ); ALTER TABLE municipio ADD CONSTRAINT municipio_departamento_fk FOREIGN KEY ( departamento_iddepartamento ) REFERENCES departamento ( iddepartamento ); CREATE TABLE zona ( idzona INTEGER NOT NULL, nombre VARCHAR2(30) ); ALTER TABLE zona ADD CONSTRAINT zona_pk PRIMARY KEY ( idzona ); CREATE TABLE centroatencion ( idcentroatencion INTEGER NOT NULL, nombre VARCHAR2(30), direccion VARCHAR2(100), municipio_idmunicipio INTEGER NOT NULL, zona_idzona INTEGER NOT NULL
); ALTER TABLE centroatencion ADD CONSTRAINT centroatencion_pk PRIMARY KEY ( idcentroatencion ); ALTER TABLE centroatencion ADD CONSTRAINT centroatencion_municipio_fk FOREIGN KEY ( municipio_idmunicipio ) REFERENCES municipio ( idmunicipio ); ALTER TABLE centroatencion ADD CONSTRAINT centroatencion_zona_fk zona_idzona ) REFERENCES zona ( idzona );
FOREIGN
KEY
(
Script DML INSERT INTO departamento (iddepartamento,nombre) VALUES (1,'santander') INSERT INTO municipio (idmunicipio,nombre,departamento_iddepartamento) VALUES (1,'piedecuesta',1) INSERT INTO municipio (idmunicipio,nombre,departamento_iddepartamento) VALUES (2,'bucaramanga',1) INSERT INTO zona(idzona,nombre) VALUES (1,'zona centro oriente') INSERT INTO centroatencion(idcentroatencion,nombre,direccion,municipio_idmun icipio,zona_idzona) VALUES (1,'CEAD Bucaramanga','Cra. 27 #4043',2,1) Nombre Estudiante 2: Ana Milena Aranda Cuaspa Script DDL CREATE TABLE tipousuario ( idtipousuario INTEGER NOT NULL, nombre VARCHAR2(20) ); ALTER TABLE tipousuario ADD PRIMARY KEY ( idtipousuario ); CREATE TABLE tipodocumento ( idtipodocumento INTEGER NOT NULL, nombre VARCHAR2(30) );
CONSTRAINT
tipousuario_pk
ALTER TABLE tipodocumento ADD CONSTRAINT tipodocumento_pk PRIMARY KEY ( idtipodocumento ); CREATE TABLE estadocivil ( idestadocivil INTEGER NOT NULL, nombre VARCHAR2(30) ); ALTER TABLE estadocivil ADD CONSTRAINT estadocivil_pk PRIMARY KEY ( idestadocivil ); Script DML INSERT INTO tipousuario(idtipousuario,nombre)VALUES(1,'administrativo') INSERT INTO tipousuario(idtipousuario,nombre)VALUES(2,'docente') INSERT INTO tipousuario(idtipousuario,nombre)VALUES(3,'estudiante') INSERT INTO tipodocumento(idtipodocumento,nombre)VALUES(1,'cédula de ciudadanía') INSERT INTO tipodocumento(idtipodocumento,nombre)VALUES(2,'tarjeta de identidad') INSERT INTO estadocivil(idestadocivil,nombre)VALUES(1,'casado(a)') Nombre Estudiante 3: Sergio Andrés Jaimes Script DDL CREATE TABLE usuario ( idusuario INTEGER NOT NULL, primernombre VARCHAR2(30), VARCHAR2(30), segundonombre primerapellido VARCHAR2(30), segundoapellido VARCHAR2(30), documento VARCHAR2(20), correo VARCHAR2(100), VARCHAR2(255), contrasenia direccion VARCHAR2(100), tipousuario_idtipousuario INTEGER NOT NULL, tipodocumento_idtipodocumento INTEGER NOT NULL, municipio_idmunicipio INTEGER NOT NULL,
ca_idcentroatencion estadocivil_idestadocivil
INTEGER NOT NULL, INTEGER NOT NULL
); ALTER TABLE usuario ADD CONSTRAINT usuario_pk PRIMARY KEY ( idusuario ); ALTER TABLE usuario ADD CONSTRAINT usuario_centroatencion_fk FOREIGN KEY ( ca_idcentroatencion ) REFERENCES centroatencion ( idcentroatencion ); ALTER TABLE usuario ADD CONSTRAINT usuario_estadocivil_fk estadocivil_idestadocivil ) REFERENCES estadocivil ( idestadocivil ); ALTER TABLE usuario ADD CONSTRAINT usuario_municipio_fk municipio_idmunicipio ) REFERENCES municipio ( idmunicipio );
FOREIGN
KEY
(
FOREIGN
KEY
(
ALTER TABLE usuario ADD CONSTRAINT usuario_tipodocumento_fk FOREIGN KEY ( tipodocumento_idtipodocumento ) REFERENCES tipodocumento ( idtipodocumento ); ALTER TABLE usuario ADD CONSTRAINT usuario_tipousuario_fk tipousuario_idtipousuario ) REFERENCES tipousuario ( idtipousuario ); Script DML INSERT INTO usuario (idusuario, primernombre, segundonombre, primerapellido, segundoapellido, documento, correo, contrasenia, direccion, tipousuario_idtipousuario, tipodocumento_idtipodocumento, municipio_idmunicipio,
FOREIGN
KEY
(
ca_idcentroatencion, estadocivil_idestadocivil) VALUES (1,'sergio','andrés','jaimes','murillo','1102355487','seanjamu@gmail .com','12345','tu hogar es donde tu estas',3,1,1,1,1) INSERT INTO usuario (idusuario, primernombre, segundonombre, primerapellido, segundoapellido, documento, correo, contrasenia, direccion, tipousuario_idtipousuario, tipodocumento_idtipodocumento, municipio_idmunicipio, ca_idcentroatencion, estadocivil_idestadocivil) VALUES (2,'pedro','andrés','perez','pinto','1102355488','[email protected] om','12345','manzana g casa 10',2,1,1,1,1) Nombre Estudiante 4: Ana Milena Aranda Cuaspa Script DDL CREATE TABLE usuariodocente ( perfil VARCHAR2(1000), usuario_idusuario INTEGER NOT NULL ); ALTER TABLE usuariodocente ADD CONSTRAINT usuariodocente_pk PRIMARY KEY ( usuario_idusuario ); ALTER TABLE usuariodocente ADD CONSTRAINT usuariodocente_usuario_fk FOREIGN KEY ( usuario_idusuario ) REFERENCES usuario ( idusuario );
CREATE TABLE escuela ( idescuela INTEGER NOT NULL, nombre VARCHAR2(100) ); ALTER TABLE escuela ADD CONSTRAINT escuela_pk PRIMARY KEY ( idescuela );
CREATE TABLE programa ( idprograma INTEGER NOT NULL, nombre VARCHAR2(100), escuela_idescuela INTEGER NOT NULL ); ALTER TABLE programa ADD CONSTRAINT programa_pk PRIMARY KEY ( idprograma ); ALTER TABLE programa ADD CONSTRAINT programa_escuela_fk escuela_idescuela ) REFERENCES escuela ( idescuela );
FOREIGN
KEY
(
CREATE TABLE estudianteprograma ( usuario_idusuario INTEGER NOT NULL, programa_idprograma INTEGER NOT NULL );
ALTER TABLE estudianteprograma ADD CONSTRAINT estudianteprograma_pk PRIMARY KEY ( usuario_idusuario, programa_idprograma ); ALTER TABLE estudianteprograma ADD CONSTRAINT estudianteprograma_programa_fk FOREIGN KEY ( programa_idprograma ) REFERENCES programa ( idprograma ); ALTER TABLE estudianteprograma ADD CONSTRAINT estudianteprograma_usuario_fk FOREIGN KEY ( usuario_idusuario ) REFERENCES usuario ( idusuario ); CREATE TABLE periodo ( idperiodo INTEGER NOT NULL, nombre VARCHAR2(20), fechainicio DATE, fechacierre DATE );
ALTER TABLE periodo ADD CONSTRAINT periodo_pk PRIMARY KEY ( idperiodo ); CREATE TABLE curso ( idcurso INTEGER NOT NULL, nombre VARCHAR2(20) ); ALTER TABLE curso ADD CONSTRAINT curso_pk PRIMARY KEY ( idcurso ); Script DML INSERT INTO usuariodocente(usuario_idusuario,perfil)VALUES(2,'profesor excelente de base de datos') INSERT INTO escuela(idescuela,nombre) VALUES(1,'Escuela de Ciencias Básicas, Tecnología e Ingeniería (ECBTI)') INSERT INTO programa(idprograma,nombre,escuela_idescuela) VALUES (1,'Ingeniería de Sistemas',1) INSERT INTO estudianteprograma(usuario_idusuario,programa_idprograma) VALUES (1,1) INSERT INTO periodo(idperiodo,nombre,fechainicio,fechacierre) VALUES (1,'2021 I PERIODO 16-02','12-04-2021','13-08-2021') INSERT INTO curso(idcurso,nombre) VALUES (1,'BASE DE DATOS AVANZADA - (301125A_952)') INSERT INTO curso(idcurso,nombre) VALUES (2,'Lenguaje de Modelado Unificado') INSERT INTO cursosmatriculados(periodo_idperiodo,usuario_idusuario,curso_idcu rso) VALUES(1,1,1) INSERT INTO cursosmatriculados(periodo_idperiodo,usuario_idusuario,curso_idcu rso) VALUES(1,1,2) Nombre Estudiante 5: Sergio Andrés Jaimes Script DDL CREATE TABLE cursosmatriculados ( periodo_idperiodo INTEGER NOT NULL, usuario_idusuario INTEGER NOT NULL, curso_idcurso INTEGER NOT NULL ); ALTER TABLE cursosmatriculados ADD CONSTRAINT cursosmatriculados_pk PRIMARY KEY (
periodo_idperiodo, usuario_idusuario, curso_idcurso ); ALTER TABLE cursosmatriculados ADD CONSTRAINT cursosmatriculados_curso_fk FOREIGN KEY ( curso_idcurso ) REFERENCES curso ( idcurso ); ALTER TABLE cursosmatriculados ADD CONSTRAINT cursosmatriculados_periodo_fk FOREIGN KEY ( periodo_idperiodo ) REFERENCES periodo ( idperiodo ); ALTER TABLE cursosmatriculados ADD CONSTRAINT cursosmatriculados_usuario_fk FOREIGN KEY ( usuario_idusuario ) REFERENCES usuario ( idusuario ); CREATE TABLE sesion ( idsesion INTEGER NOT NULL, nombre VARCHAR2(100), fecha DATE, puntos INTEGER, evaluacion VARCHAR2(1000), curso_idcurso INTEGER NOT NULL, periodo_idperiodo INTEGER NOT NULL, ud_usuario_idusuario INTEGER NOT NULL ); A...