SlideShare una empresa de Scribd logo
1 de 108
Curso de Bases de Datos desde Cero
Bienvenidos
Herramientas a Usar:
S.O. Windows
S.O. Linux (Ubuntu)
SGBD Postgresql
Consola de Comandos – Terminal
Cliente PgAdmin
Comenzamos
¿Qué es una Base de Datos?
Una base de datos es un conjunto de información organizada
que cumple con un objetivo común.
Sin embargo, hablando desde el punto de vista tecnológico,
estas bases de datos deben estar almacenadas de manera
persistente en un medio electrónico/digital.
Características que debe cumplir una BD:
• Versatilidad en la representación de la información.
• Desempeño.
• Mínima Redundancia.
• Capacidad de Acceso. (Compartida y concurrente).
• Simplicidad.
• Integridad.
• Seguridad y Privacidad.
SGBD
Sistema Gestor de Bases de Datos. (DBMS)
Es la herramienta de software que permite administrar una base de datos.
• Crear
• Modificar
• Poblar
• Actualizar
• Seleccionar
• Borrar
• Administrar privilegios
Dentro de los SGBD Relacionales más conocidos están:
• MySQL
• Sql Server
• Oracle
• DB2
• Informix
Para el presente curso utilizaremos el SGBDR Llamado Postgresql.
Dentro de los SGBD No Relacionales más conocidos:
• MongoDB
• FireBase
• CouchDB
• Neo4j
• Cassandra
Instalación de PostgreSQL
Fases del diseño de las bases de datos
• Diseño Conceptual
• Diseño Lógico
• Diseño Físico
Diseño Conceptual
Modelo Entidad Relación - MER
ENTIDAD ENTIDAD
RELACIÓN
Atributo1
Atributo2
Atributo3
Atributo1
Atributo2
Atributo3
Conceptos
Entidad: Representa un objeto/elemento del Universo de discurso (Del problema a resolver).
ENTIDAD
Conceptos
Entidad Débil: Representa un objeto/elemento del Universo de discurso (Del problema a
resolver) pero que necesita de una relación con otra entidad para su identificación.
ENTIDAD
Conceptos
Relación: Representa el tipo de relación entre entidades.
Relación
Conceptos
Relación con dependencia de identificación: Representa el tipo de relación que identifica la
dependencia entre entidades.
Relación
Conceptos
ROL: Es la representación de la unión entre las relaciones y las entidades. (Conector).
Conceptos
Atributos: Representan las características de las entidades.
Nombre_atributo Nombre_atributo
Tipos de Atributos
Atributo simple
y monovaluado
Atributo Identificador
Principal
Atributo Identificador
Alternativo
Atributo
multivaluado
Atributo
Opcional
Atributo
Compuesto
Restricciones
Tipo de Correspondencia de cardinalidades
Número máximo de ejemplares de una entidad asociados a una combinación de
ejemplares de las otras entidades en la interrelación, que puede ser 1 o N.
Persona Posee Vehículo
1:N
Restricciones
Cardinalidades Máximas y Mínimas
Son el número máximo y mínimo de ejemplares de una entidad que puede
relacionarse con un único ejemplar de la otra entidad que participa en la
interrelación. Se representan como (0,1), (1,1), (0,N), (1,N) y se situan en la línea
que conecta la entidad con el rombo que representa el tipo de interrelación.
Persona Posee Vehículo
1:N
(0,1) (0,N)
Conceptos
Ejemplo de Relación.
Persona
Nombre Edad Estatura
Posee Vehículo
Placa Modelo Color
1:N
Conceptos
Relación Recursiva
Persona
Nombre Edad Estatura
compañer@
Ejemplo:
Se requiere un sistema de información que permita gestionar la información de los
Arriendos/Alquileres de las viviendas.
Este sistema debe contener la información del propietario de la(s) vivienda(s) y la información
que se debe contemplar para dicho propietario es: identificación, nombre completo, teléfonos de
contacto y opcionalmente el correo electrónico. La(s) vivienda(s) deben tener la información de:
código de la vivienda, dirección, la cual está compuesta por: calle y número, la vivienda debe
tener además una descripción y la cantidad de habitantes. Cada vivienda se encuentra ubicada
en una ciudad y dicha ciudad pertenece a un departamento/estado. Se debe tener la información
de los arriendos/alquileres los cuales tendrán la información de: fecha de inicio, fecha de fin,
valor mensual. Y también se requiere conocer la información del (los) inquilino(s), la información
de este debe ser: identificación, nombre completo y teléfonos.
PROPIETARIO
Identifi.
nombre
nombres apellidos
telefonos email
PROPIETARIO
Identifi.
nombre
nombres apellidos
telefonos email
VIVIENDA
código
dirección
calle número
descripción
cant_habitantes
PROPIETARIO
Identifi.
nombre
nombres apellidos
telefonos email
VIVIENDA
código
dirección
calle número
descripción
cant_habitantes
CIUDAD
código nombre
PROPIETARIO
Identifi.
nombre
nombres apellidos
telefonos email
VIVIENDA
código
dirección
calle número
descripción
cant_habitantes
CIUDAD
código nombre
DEPARTAMENTO
código nombre
PROPIETARIO
Identifi.
nombre
nombres apellidos
telefonos email
VIVIENDA
código
dirección
calle número
descripción
cant_habitantes
CIUDAD
código nombre
DEPARTAMENTO
código nombre
ARRIENDO
código f_inicio f_fin valor_mensual
PROPIETARIO
Identifi.
nombre
nombres apellidos
telefonos email
VIVIENDA
código
dirección
calle número
descripción
cant_habitantes
CIUDAD
código nombre
DEPARTAMENTO
código nombre
ARRIENDO
código f_inicio f_fin valor_mensual
INQUILINO
Identifi.
nombre
nombres apellidos
telefonos
PROPIETARIO
Identifi.
nombre
nombres apellidos
telefonos email
VIVIENDA
código
dirección
calle número
descripción
cant_habitantes
Posee
1:N
CIUDAD
código nombre
DEPARTAMENTO
código nombre
ARRIENDO
código f_inicio f_fin valor_mensual
INQUILINO
Identifi.
nombre
nombres apellidos
telefonos
(1:N)
(1:1)
PROPIETARIO
Identifi.
nombre
nombres apellidos
telefonos email
VIVIENDA
código
dirección
calle número
descripción
cant_habitantes
Posee
1:N
CIUDAD
Ubicada
N:1
código nombre
DEPARTAMENTO
código nombre
ARRIENDO
código f_inicio f_fin valor_mensual
INQUILINO
Identifi.
nombre
nombres apellidos
telefonos
(1:N)
(1:1) (0:N) (1:1)
PROPIETARIO
Identifi.
nombre
nombres apellidos
telefonos email
VIVIENDA
código
dirección
calle número
descripción
cant_habitantes
Posee
1:N
CIUDAD
Ubicada
N:1
código nombre
DEPARTAMENTO
Pertenece
código nombre
N:1
ARRIENDO
código f_inicio f_fin valor_mensual
INQUILINO
Identifi.
nombre
nombres apellidos
telefonos
(1:N)
(1:1) (0:N) (1:1)
(1:N)
(1:1)
PROPIETARIO
Identifi.
nombre
nombres apellidos
telefonos email
VIVIENDA
código
dirección
calle número
descripción
cant_habitantes
Posee
1:N
CIUDAD
Ubicada
N:1
código nombre
DEPARTAMENTO
Pertenece
código nombre
N:1
ARRIENDO
código f_inicio f_fin valor_mensual
Participa
1:N
INQUILINO
Identifi.
nombre
nombres apellidos
telefonos
(1:N)
(1:1) (0:N) (1:1)
(1:N)
(1:1)
(1:1)
(0:N)
PROPIETARIO
Identifi.
nombre
nombres apellidos
telefonos email
VIVIENDA
código
dirección
calle número
descripción
cant_habitantes
Posee
1:N
CIUDAD
Ubicada
N:1
código nombre
DEPARTAMENTO
Pertenece
código nombre
N:1
ARRIENDO
código f_inicio f_fin valor_mensual
Participa
1:N
INQUILINO
Identifi.
nombre
nombres apellidos
telefonos
Realizado
N:M
(1:N)
(1:1) (0:N) (1:1)
(1:N)
(1:1)
(1:1)
(0:N)
(1:N)
(1:N)
Diseño Lógico
Modelo Relacional - MR
R(atributo1, atributo2, atributo3, …, atributoN)
Traducción del MER al MR:
Persona
Nombre Edad Estatura
ENTIDADES, ATRIBUTOS SIMPLES Y MONOVALUADOS RELACIONES Y ATRIBUTOS
PERSONA(Nombre, Edad, Estatura)
dominio(Nombre) : carácter de tamaño n
dominio(Edad): entero de 0 hasta 150
dominio(Estatura): decimal de 0 hasta 2.90
Traducción del MER al MR:
Persona
Nombre Edad Email
ENTIDADES, ATRIBUTOS OPCIONALES RELACIONES Y ATRIBUTOS
PERSONA(Nombre, Edad, Email*)
Traducción del MER al MR:
Persona
Nombre
ENTIDADES, ATRIBUTOS COMPUESTOS
RELACIONES Y ATRIBUTOS
PERSONA(Nombre_Nombres, Nombre_Apellidos, Edad)
dominio(Nombre_Nombres) : carácter de tamaño n
dominio(Nombre_Apellidos) : carácter de tamaño n
dominio(Edad): entero de 0 hasta 150
Nombres Apellidos
Edad
Traducción del MER al MR:
Persona
Nombre
ENTIDADES, ATRIBUTOS MULTIVALUADOS
RELACIONES Y ATRIBUTOS
PERSONA(Nombre, Edad)
Teléfonos
Edad
TELEFONOS(Telefono)
Traducción del MER al MR:
Persona
Nombre
ENTIDADES, ATRIBUTOS MULTIVALUADOS
CLAVES PRIMARIAS Y CLAVES FORANEAS RELACIONES Y ATRIBUTOS
PERSONA(Nombre, Edad)
Teléfonos
Edad
TELEFONOS(Nombre, Telefono)
TELEFONOS(Nombre, Telefono)
PERSONA
O
Traducción del MER al MR:
RELACIONES
CARDINALIDAD 1:1
PERSONA CARNET
Tiene
un
1:1
PERSONA(Nombre, edad, dirección, Codigo)
CARNET(Codigo, Nombre, cargo, tiposangre)
Traducción del MER al MR:
RELACIONES
CARDINALIDAD 1:N
PERSONA VEHÍCULO
Posee
1:N
PERSONA(Nombre, edad, dirección)
VEHÍCULO(Nombre, modelo, color)
Traducción del MER al MR:
RELACIONES
CARDINALIDAD N:M
ALUMNO MATERIA
Matricula
N:M
ALUMNO(identificacion, nombre, edad)
MATERIA(codigo, nombre, salon, horario)
MATRICULA(identificacion, codigo)
PROPIETARIO
Identifi.
nombre
nombres apellidos
telefonos email
VIVIENDA
código
dirección
calle número
descripción
cant_habitantes
Posee
1:N
CIUDAD
Ubicada
N:1
código nombre
DEPARTAMENTO
Pertenece
código nombre
N:1
ARRIENDO
código f_inicio f_fin valor_mensual
Participa
1:N
INQUILINO
Identifi.
nombre
nombres apellidos
telefonos
Realizado
N:M
(1:N)
(1:1) (0:N) (1:1)
(1:N)
(1:1)
(1:1)
(0:N)
(1:N)
(1:N)
PROPIETARIO(identificacion, nom_nombres, nom_apellidos, email*)
TELEFONOS(identificación, telefono)
VIVIENDA(código, dir_calle, dir_numero, cant_habitantes, descripción, identificación, codigo_ciudad)
CIUDADES(codigo_ciudad, nombre, departamento)
DEPARTAMENTO(codigo_departamento, nombre)
ARRIENDO(codigo, f_inicio, f_fin, valor_mensual, codigo_vivienda)
INQUILINO(identificacion, nom_nombres, nom_apellidos)
TELEFONOS_INQUILINOS(identificación, telefono)
ARRIENDO_INQUILINO(codigo, identificacion)
Modelo Relacional
PROPIETARIO(identificacion, nom_nombres, nom_apellidos, email*)
TELEFONOS(identificación, telefono)
VIVIENDA(código, dir_calle, dir_numero, cant_habitantes, descripción, identificación, codigo_ciudad)
CIUDADES(codigo_ciudad, nombre, departamento)
DEPARTAMENTO(codigo_departamento, nombre)
ARRIENDO(codigo, f_inicio, f_fin, valor_mensual, codigo_vivienda)
INQUILINO(identificacion, nom_nombres, nom_apellidos)
TELEFONOS_INQUILINOS(identificación, telefono)
ARRIENDO_INQUILINO(codigo, identificacion)
Modelo Relacional
Representación Tabular
R {
(atributo1, atributo2, atributo3, …, atributoN),
(atributo1, atributo2, atributo3, …, atributoN),
(atributo1, atributo2, atributo3, …, atributoN),
…
(atributo1, atributo2, atributo3, …, atributoN)
}
Restricciones:
• Restricción Nulo: No permite que el valor del atributo sea nulo.
• Restricción de Identidad: No permite tener dos valores repetidos en las
claves primarias.
• Restricción de Integridad de Entidad: No permite tener valores nulos en la
clave primaria.
• Restricción de Integridad Referencial: No permite tener valores en la clave
foránea que no existan en la clave primaria. Sin embargo, si permite tener
valores nulos en la clave foránea.
• Restricción de Clave Alterna: No permite valores repetidos en la clave
alterna.
• Restricción de Dominio: Los datos deben ser del dominio específico.
Ejemplo: dominio de los números enteros comprendidos entre 0 y 18.
Operaciones Transaccionales
• INSERCIÓN
• ELIMINACIÓN
• ACTUALIZACIÓN
Transacciones Compuestas
• BEGIN
• COMMIT
• ROLLBACK
Violaciones de Restricciones
OPERACIÓN IDENTIDAD ENTIDAD REFERENCIAL UNICA DOMINIO NULO
INSERTAR SI
Sin Alternativas
SI
Sin Alternativas
SI
Alternativa
NULO
SI
Alternativa
NULO
SI
Sin Alternativas
SI
Alternativa
VALOR X
DEFECTO
ELIMINAR NO NO SI (Si es de la
tabla padre que
contiene
información en
las tablas hijo)
Alternativa
NULIFICAR,
CASCADA,
RESTRINGIR
NO NO NO
ACTUALIZAR SI
Sin Alternativas
SI
Sin Alternativas
SI (Padre a Hijo)
Alternativas
iguales a
Eliminar.
SI
Alternativa
NULO
SI
Sin Alternativas
SI
Sin Alternativas
Lenguaje SQL
Structured Query Language por sus siglas en inglés.
Lenguaje de consulta estructurado, es el lenguaje estándar para la administración de la
información en los SGBDR.
Los 3 principales Grupos de SQL
• DDL: Lenguaje de Definición de Datos (Data Definition
Language).
• DML: Lenguaje de Manipulación de Datos (Data Manipulation
Language).
• DCL: Lenguaje de Control de Acceso a Datos (Data Control
Language).
DDL – Data Definition Language
CREAR
MODIFICAR
BORRAR
DDL – CREAR
Usuarios
Bases de Datos
Tablas
DDL – CREAR USUARIOS
CREATE USER nombre PASSWORD ‘contraseña’
DDL – CREAR BASES DE DATOS
CREATE DATABASE nombre OWNER = usuario TABLESPACE = el_tablespace
DDL – CREAR TABLAS
DDL – CREAR TABLAS
CREATE TABLE nombre_tabla (
columna1 tipo_dato,
columna2 tipo_dato (tamaño),
columna3 tipo_dato NOT NULL,
columna4 tipo_dato DEFAULT valor_x_defecto,
columna5 SERIAL,
CONSTRAINT nombre_constraint1 CHECK (columnaN > valor and
columaN < valor),
CONSTRAINT nombre_constraint2 PRIMARY KEY (columnaN, …,
columnaM),
CONSTRAINT nombre_constraint3 UNIQUE (columnaN, …, columnaM),
CONSTRAINT nombre_constraint4 FOREIGN KEY (columnaN, … columnaM)
REFERENCES otra_tabla(columnaN, … columnaM) ON
DELETE acción ON UPDATE accion
)
DDL – MODIFICAR
Usuarios
Bases de Datos
Tablas
DDL – MODIFICAR BD.
ALTER DATABASE nombre RENAME TO nuevo_nombre
ALTER DATABASE nombre OWNER TO nuevo_usuario
ALTER DATABASE nombre SET TABLESPACE nuevo_tablespace
DDL – MODIFICAR TABLAS.
ALTER TABLE nombre ADD COLUMN campoN tipo_dato (tamaño)
ALTER TABLE nombre DROP COLUMN campoN
ALTER TABLE nombre ALTER COLUMN campoN SET NOT NULL
ALTER TABLE nombre ALTER COLUMN campoN DROP NOT NULL
ALTER TABLE nombre ADD CONSTRAINT nombre_constraint FOREIGN KEY (campoN, … campoM)
REFERENCES otra_tabla (campoN, …, campoM) ON DELETE acción ON UPDATE acción
ALTER TABLE nombre DROP CONSTRAINT nombre_constraint
ALTER TABLE nombre ALTER COLUMN campoN SET DEFAULT valor_x_defecto
ALTER TABLE nombre ALTER COLUMN campoN DROP DEFAULT
ALTER TABLE nombre ALTER COLUMN campoN TYPE nuevo_tipo (tamaño)
ALTER TABLE nombre RENAME COLUMN columnaN TO columnaM
ALTER TABLE nombre RENAME TO nuevo_nombre
DDL – BORRAR
Usuarios
DROP USER nombre
Bases de Datos
DROP DATABASE nombre
Tablas
DROP TABLE nombre
DCL – GRANT and REVOKE
GRANT: Permite realizar una acción sobre un objeto.
GRANT acción ON objeto TO usuario
REVOKE: Restringe realizar una acción sobre un objeto.
REVOKE acción ON objeto FROM usuario
DML – Manipulación de Datos
INSERT: Ingresar información
UPDATE: Modificar Información
DELETE: Borrar Información
DML – INSERT
INSERT INTO tabla (campo1, campo2, …, campoN) VALUES (valor1, valor2, ….,
valorN)
INSERT INTO tabla (campo5, campo3, campo1, campo18, …, campoN) VALUES
(valor5, valor1, valor18, …, valorN)
INSERT INTO tabla VALUES (valor1, valor2, …, valorN)
INSERT INTO tabla VALUES (DEFAULT, valorN, valorM, …, valorZ)
INSERT INTO tabla VALUES (valorA1, valorA2, … valorAN),
(valorB1, valorB2, …, valorBN),
(valorC1, valorC2, … valorCN)
INSERT INTO tabla SELECT consulta_aqui
DML – UPDATE
UPDATE tabla SET campo1 = valor1, campo2
= valor2, …, campoN = valorN WHERE campoM
= valorM
Where:
WHERE campoM = valorM (=, >, <, <>)
WHERE campoM BETWEEN valor1 AND valor2
WHERE campoM IN (valor1, valor2, …,
valorN)
WHERE campoM IN SELECT consulta
WHERE campoM NOT IN…
DML – DELETE
DELETE FROM tabla WHERE campoN = valorN
Where:
WHERE campoM = campoM (=, >, <, <>)
WHERE campoM BETWEEN valor1 AND valor2
WHERE campoM IN (valor1, valor2, …, valorN)
WHERE campoM IN SELECT consulta
WHERE campoM NOT IN…
ÁLGEBRA RELACIONAL
PROYECCIÓN
Permite filtrar las columnas / atributos que se quieren
mostrar de una relación.
SELECT campo1, campo2, …, campoN
FROM tabla
RENOMBRAMIENTO
Permite renombrar la relación o los atributos de una relación.
R(a1, a2, …, aN) -> S(a1, a2, …, aN)
R(a1, a2, …, aN) -> R(b1, b2, …, bN)
R(a1, a2, …, aN) -> S(b1, b2, …, bN)
RENOMBRAMIENTO
SELECT *
FROM TABLA1 AS NUEVO_NOMBRE
SELECT campo1 AS nombre, campo2 AS apelli
FROM TABLA1 AS integrantes
SELECCIÓN
Se conoce también como FILTRO. Y nos permite seleccionar
solamente unos registros de una relación que cumplen con
uno o varios criterios.
SELECT campo1, campo2, …, campoN
FROM tabla
WHERE campo1 {cumple la condición}
UNIÓN
Dos relaciones son compatibles en unión si sus dominios coinciden en
número y en orden. Y es la disyunción de los conjuntos. Es decir, el
elemento está en uno o en el otro conjunto.
R1(a1, a2, …, an)
R2(b1, b2, …, bn)
dominio R1(ai) = dominio R2(bi)
UNIÓN
SELECT campo1, campo2, …,
campoN
FROM tabla1
UNION [ ALL ]
SELECT otro1, otro2, …, otroN
FROM tabla2
INTERSECCIÓN
Dos relaciones son compatibles en intersección si sus dominios
coinciden en número y en orden. Y es la conjunción de los conjuntos. Es
decir, el elemento tiene que estar en ambos conjuntos.
R1(a1, a2, …, an)
R2(b1, b2, …, bn)
dominio R1(ai) = dominio R2(bi)
INTERSECCIÓN
SELECT campo1, campo2, …,
campoN
FROM tabla1
INTERSECT
SELECT otro1, otro2, …, otroN
FROM tabla2
INTERSECCIÓN - EQUIVALENCIA
SELECT campo1, campo2, …,
campoN
FROM tabla1
WHERE (campo1, campo2, …,
campoN)
IN (SELECT otro1, otro2, …,
otroN
FROM tabla2)
DIFERENCIA
Dos relaciones son compatibles en diferencia si sus dominios coinciden
en número y en orden. Y es la diferencia de los conjuntos. Es decir, el
elemento tiene que estar en el primer conjunto, pero no en el segundo.
R1(a1, a2, …, an)
R2(b1, b2, …, bn)
dominio R1(ai) = dominio R2(bi)
DIFERENCIA
SELECT campo1, campo2, …,
campoN
FROM tabla1
EXCEPT
SELECT otro1, otro2, …, otroN
FROM tabla2
DIFERENCIA - EQUIVALENCIA
SELECT campo1, campo2, …, campoN
FROM tabla1
WHERE (campo1, campo2, …, campoN)
NOT IN (SELECT otro1, otro2, …,
otroN
FROM tabla2)
PRODUCTO CARTESIANO
El producto cartesiano no exige la compatibilidad de dominios ni en
número ni en orden.
R1(a1, a2, a3, a4, …, aN)
R2(b1, b2, …, bX)
Q(a1, a2, a3, a4, …, aN, b1, b2, …, bX)
JOIN
COMBINACIÓN RELACIONAL.
CROSS JOIN
Es el resultado del producto cartesiano de las relaciones que
intervienen en la combinación.
SELECT a.campo1, a.campo2, …, a.campoN, b.campo1, b.campo2, …,
FROM tabla1 as a CROSS JOIN tabla2 as b
NATURAL JOIN
Combina dos relaciones de manera natural entre la clave primaria de
una y la clave foránea de la otra.
SELECT a.campo1, a.campo2, …, a.campoN, b.campo1, b.campo2, …,
FROM tabla1 as a NATURAL INNER JOIN tabla2 as b
INNER JOIN
Combina dos relaciones cuando se necesita especificar el (los)
atributo(s) con los que se combinarán.
SELECT a.campo1, a.campo2, …, a.campoN, b.campo1, b.campo2, …,
FROM tabla1 as a INNER JOIN tabla2 as b ON a.campo1 = b.campo1
LEFT JOIN
Combina dos relaciones realizando primero un INNER JOIN y luego
añade todas aquellas filas (registros) de la relación nombrada en la
parte izquierda de la sentencia que no satisfacen la combinación con
la relación de la parte derecha.
SELECT a.campo1, a.campo2, …, a.campoN, b.campo1, b.campo2, …,
FROM tabla1 as a LEFT JOIN tabla2 as b ON a.campo1 = b.campo1
RIGHT JOIN
Combina dos relaciones realizando primero un INNER JOIN y luego
añade todas aquellas filas (registros) de la relación nombrada en la
parte derecha de la sentencia que no satisfacen la combinación con la
relación de la parte izquierda.
SELECT a.campo1, a.campo2, …, a.campoN, b.campo1, b.campo2, …,
FROM tabla1 as a RIGHT JOIN tabla2 as b ON a.campo1 = b.campo1
FULL JOIN
Combina dos relaciones realizando primero un INNER JOIN y luego
realiza un Left Join y por último un Right Join.
SELECT a.campo1, a.campo2, …, a.campoN, b.campo1, b.campo2, …,
FROM tabla1 as a FULL JOIN tabla2 as b ON a.campo1 = b.campo1
NORMALIZACIÓN DE RELACIONES
¿PARA QUÉ SIRVE?
La normalización se utiliza para verificar si una relación no tiene
problemas como:
• Redundancia.
• Problemas de:
• Inserción
• Actualización
• Borrado
Cálculo de las DEPENDENCIAS FUNCIONALES
En una relación:
R(Atributos, Dependencias)
Atributos: {A, B}
B depende funcionalmente de A si para cada valor de A solamente existe un valor de B.
Notación: A -> B
Ejemplo: Identificacion -> Nombre
Cálculo de las DEPENDENCIAS REDUNDANTES
En una relación:
R(Atributos, Dependencias)
Atributos: {A, B, C}
Dependencias: {A->B; B->C; A->C}
La dependencia A->C es redundante ya que C depende transitivamente de A.
Cálculo de las CLAVES CANDIDATAS
En una relación:
R(Atributos, Dependencias)
Atributos: {A, B, C, D}
Dependencias: {A->B,D; B->C;}
A+ = {A,B,C,D}, B+{B, C}, C+{C}, D+{D}.
Por lo tanto la superclave será A ya que este atributo puede determinar toda la R.
Formas Normales
5FN
4FN
FNBC
3FN
2FN
1FN
Descripción
1FN
• Cada atributo es simple.
• Cada atributo es monovaluado.
2FN
• Se encuentra en 1FN.
• Cada atributo no principal tiene DF de la clave candidata.
3FN
• Se encuentra en 2FN.
• No existe ningún atributo no principal que dependa transitivamente de clave candidata.
FNBC
• Si y solo si todo determinante es la clave candidata.
Ejemplos:
1FN
NOMBRE SKILLS
ALVARO FELIPE HTML, CSS,
JAVASCRIPT
ALEXYS LOZADA JAVA, JAVASCRIPT,
DBA
NOMBRE SKILLS
ALVARO FELIPE HTML
ALVARO FELIPE CSS
ALVARO FELIPE JAVASCRIPT
ALEXYS LOZADA JAVA
ALEXYS LOZADA JAVASCRIPT
ALEXYS LOZADA DBA
Ejemplos:
2FN
ESTUDIANTE MATERIA NOTA SALON
PEDRO MATEMÁTICAS 5 204
PABLO MATEMÁTICAS 4 204
JUAN ESPAÑOL 4 111
ESTUDIANTE MATERIA NOTA
PEDRO MATEMÁTICAS 5
PABLO MATEMÁTICAS 4
JUAN ESPAÑOL 4
MATERIA SALON
MATEMÁTICAS 204
ESPAÑOL 111
Ejemplos:
3FN
Materia Salón Teléfono
MATEMÁTICAS 101 3333333
ESPAÑOL 201 4444444
BIOLOGÍA 104 2121212
Materia Salón
MATEMÁTICAS 101
ESPAÑOL 201
BIOLOGÍA 104
Salón Teléfono
101 3333333
201 4444444
104 2121212
Ejemplos:
FNBC
IDENTIFICACION NOMBRE MATERIA NOTA
123 PEDRO MATEMATICAS 3
123 PEDRO ESPAÑOL 4
233 PABLO MATEMATICAS 4
IDENTIFICACION NOMBRE
123 PEDRO
233 PABLO
IDENTIFICACION MATERIA NOTA
123 MATEMATICAS 3
123 ESPAÑOL 4
233 MATEMATICAS 4
Proceso de normalización
Atributos = {A1, A2, …, An}
Dependencias = {D1, D2, … Dn}
Atributos = {A1, …, Ai}
Dependencias = {D1, …, Di}
Atributos = {Ai, …, An}
Dependencias = {Dj+, … Dn}
Atributos = {A1, …, Ak}
Dependencias = {Dj+1, …, Ds}
Atributos = {Al, …, An}
Dependencias = {Dl, … Dn}
Ejemplo
Profesor Oficina Teléfono Materia Créditos Libro Autor Año
Pedro 101 2454545 MATEMÁTICAS 5 ALGEBRA BALDOR 1970
Pedro 101 2454545 ESPAÑOL 3 LITERATURA ANÓNIMO 1950
Pablo 105 5414141 MATEMÁTICAS 5 CÁLCULO I BOUNETE 1985
Pablo 105 5414141 MATEMÁTICAS II 4 CÁLCULO I BOUNETE 1985
Pablo 105 5414141 GEOGRAFÍA 2 ALGEBRA BALDOR 1970
Juan 102 3696969 CONTABILIDAD 1 IMPUESTOS ANTORINI 1999
Lucas 103 4585858 CONTABILIDAD 1 IMPUESTOS ANTORINI 1999
Lucas 103 4585858 MATEMÁTICAS 3 5 CÁLCULO 2 BEYONCE 1986
Lucas 103 4585858 ESPAÑOL 3 LENGUAS GAITÁN 1980
Problemas
Inserción:
• No se puede ingresar un Profesor si no se le ha asignado una materia la cual debe tener a su vez un libro y salón.
• No se puede ingresar una Materia si no existe un profesor asignado y un libro y un salón.
• Etc…
Borrado:
• No se puede borrar un solo registro si se quiere eliminar un profesor.
• No se puede borrar un solo registro si se quiere eliminar un libro.
• “ “ “ “ “ “ una materia.
• Si se eliminan los registros de un profesor, se estaría borrando la información de las materias.
• Si se elimina la única materia que dicta un profesor, se pierde la información de dicho profesor.
Encontrando las DF
Un profesor tiene una única oficina y un único teléfono:
• Profesor -> Oficina, Teléfono
Una oficina tiene un único teléfono
• Oficina -> Teléfono
Una materia tiene un número de créditos
• Materia -> Créditos
Un libro tiene un autor y año de edición
• Libro -> Autor, Año
Un profesor puede dictar más de una materia
• Profesor -- / -> Materia
Una materia tiene más de un profesor
• Materia -- / -> Profesor
Un profesor en una materia utiliza un solo libro el
cual tiene un autor y un año de edición
• Profesor, Materia -> Libro, Autor, Año
Encontrando las DF (Resumen)
Dependencias: {
Profesor -> Oficina, Teléfono
Oficina -> Teléfono
Materia -> Créditos
Libro -> Autor, Año
Profesor -- / -> Materia
Materia -- / -> Profesor
Profesor, Materia -> Libro, Autor, Año
}
Encontrando las DF (Resumen)
Dependencias: {
Profesor -> Oficina
Oficina -> Teléfono
Materia -> Créditos
Libro -> Autor, Año
Profesor, Materia -> Libro
}
Atr = {P,O,T,M,C,L,A,Ñ}
Dep = {P->O; O->T; M->C; L->A,Ñ; P,M->L}
Atr1 = {L,A,Ñ}
Dep1 = {L->A,Ñ}
Atr1’ = {P,O,T,M,C,L}
Dep1’ = {P->O; O->T; M->C; P,M->L}
Atr2 = {M,C}
Dep2 = {M->C}
Atr2’ = {P,O,T,M,L}
Dep2’ = {P->O; O->T; P,M->L}
Atr3 = {O,T}
Dep3 = {O->T}
Atr3’ = {P,O,M,L}
Dep3’ = {P->O; P,M->L}
Atr4 = {P,O}
Dep4 = {P->O}
Atr5 = {P,M,L}
Dep5 = {P,M->L}
Proyecto Final
Sistema de Compra y Venta
Universo de Discurso
Se requiere un sistema de información que nos permita realizar la compra y venta de productos a diferentes
proveedores y clientes.
El sistema debe tener un proceso de login para poder realizar las acciones de compra y venta.
Los productos deben tener la siguiente información: codigo, nombre, cantidad y precio. Los proveedores y clientes
deben tener la siguiente información: identificación, nombre, dirección y teléfono.
Las compras deben tener la información de fecha, proveedor, producto, cantidad y valor. Las ventas deben tener: la
fecha, el cliente, el producto, cantidad y valor de venta.
Se debe tener la información de auditoría cuando se haga una compra o una venta o cuando se modifique la
información del producto. Cuando se realice una compra se debe incrementar la cantidad del producto y cuando se
realice una venta se deberá disminuir la cantidad del producto vendido.
Se debe poder consultar la información de las ventas detalladas, compras detalladas y del inventario actual.
PERFIL USUARIO
Id perfil Id usuario
clave
nombre
Tiene
TERCERO
Id identificación
nombre dirección teléfono
PRODUCTO
Id nombre
cantidad precio
Actualiza
COMPRA
Id fecha
cantidad valor
Realiza
A-un
Tiene
1:N
1:N
AUDITORIA
Id fecha
acción tabla
anterior
nuevo
Audita
N:1
1:N 1:N
N:1

Más contenido relacionado

Similar a Teoría del curso de postgresql desde cero

Modelo entidad relacion
Modelo entidad relacionModelo entidad relacion
Modelo entidad relaciondanielglot
 
TEMA_2_EL_MODELO_ENTIDAD_RELACION.ppt
TEMA_2_EL_MODELO_ENTIDAD_RELACION.pptTEMA_2_EL_MODELO_ENTIDAD_RELACION.ppt
TEMA_2_EL_MODELO_ENTIDAD_RELACION.pptAbigailLiendolopez1
 
TEMA 2 EL MODELO ENTIDAD RELACION.ppt
TEMA 2 EL MODELO ENTIDAD RELACION.pptTEMA 2 EL MODELO ENTIDAD RELACION.ppt
TEMA 2 EL MODELO ENTIDAD RELACION.pptXiomaraVaca
 
Modelo de datos semantico
Modelo de datos semanticoModelo de datos semantico
Modelo de datos semanticoclasetic2011
 
Modelo_Entidad_Relacion.pdf
Modelo_Entidad_Relacion.pdfModelo_Entidad_Relacion.pdf
Modelo_Entidad_Relacion.pdfa e
 
Tema 1-1: datos y tipos de datos
Tema 1-1: datos y tipos de datosTema 1-1: datos y tipos de datos
Tema 1-1: datos y tipos de datosRufi Flores
 
Modelamiento de-entidad relacion
Modelamiento de-entidad relacionModelamiento de-entidad relacion
Modelamiento de-entidad relacionAnthonyLeonRuiz
 
Nucleo 4 - Diseño de DB con Modelo Entidad Relación
Nucleo 4 - Diseño de DB con Modelo Entidad RelaciónNucleo 4 - Diseño de DB con Modelo Entidad Relación
Nucleo 4 - Diseño de DB con Modelo Entidad Relacióncarsanta
 

Similar a Teoría del curso de postgresql desde cero (20)

Modelo entidad relacion
Modelo entidad relacionModelo entidad relacion
Modelo entidad relacion
 
Trabajo de sistemas andrey
Trabajo de sistemas andreyTrabajo de sistemas andrey
Trabajo de sistemas andrey
 
Modelo entidad relacion
Modelo entidad relacionModelo entidad relacion
Modelo entidad relacion
 
Modelo entidad relacion
Modelo entidad relacionModelo entidad relacion
Modelo entidad relacion
 
Modelo entidad relacion
Modelo entidad relacionModelo entidad relacion
Modelo entidad relacion
 
TEMA_2_EL_MODELO_ENTIDAD_RELACION.ppt
TEMA_2_EL_MODELO_ENTIDAD_RELACION.pptTEMA_2_EL_MODELO_ENTIDAD_RELACION.ppt
TEMA_2_EL_MODELO_ENTIDAD_RELACION.ppt
 
TEMA 2 EL MODELO ENTIDAD RELACION.ppt
TEMA 2 EL MODELO ENTIDAD RELACION.pptTEMA 2 EL MODELO ENTIDAD RELACION.ppt
TEMA 2 EL MODELO ENTIDAD RELACION.ppt
 
Modelado de datos
Modelado de datosModelado de datos
Modelado de datos
 
Diseño bases d e datos
Diseño bases d e datosDiseño bases d e datos
Diseño bases d e datos
 
Modelo de datos semantico
Modelo de datos semanticoModelo de datos semantico
Modelo de datos semantico
 
Modelo_Entidad_Relacion.pdf
Modelo_Entidad_Relacion.pdfModelo_Entidad_Relacion.pdf
Modelo_Entidad_Relacion.pdf
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datos
 
Modelo E-R "Equipo Porchas"
Modelo E-R "Equipo Porchas"Modelo E-R "Equipo Porchas"
Modelo E-R "Equipo Porchas"
 
Tema 1-1: datos y tipos de datos
Tema 1-1: datos y tipos de datosTema 1-1: datos y tipos de datos
Tema 1-1: datos y tipos de datos
 
Modelamiento de-entidad relacion
Modelamiento de-entidad relacionModelamiento de-entidad relacion
Modelamiento de-entidad relacion
 
Dbd1.2
Dbd1.2Dbd1.2
Dbd1.2
 
Actividad base de datos 3
Actividad base de datos 3Actividad base de datos 3
Actividad base de datos 3
 
Modelo Entidad Relacion.pdf
Modelo Entidad Relacion.pdfModelo Entidad Relacion.pdf
Modelo Entidad Relacion.pdf
 
Nucleo 4 - Diseño de DB con Modelo Entidad Relación
Nucleo 4 - Diseño de DB con Modelo Entidad RelaciónNucleo 4 - Diseño de DB con Modelo Entidad Relación
Nucleo 4 - Diseño de DB con Modelo Entidad Relación
 
Auditoria y sistema
Auditoria y sistemaAuditoria y sistema
Auditoria y sistema
 

Último

Modelado de Casos de uso del negocio
Modelado de  Casos  de  uso  del negocioModelado de  Casos  de  uso  del negocio
Modelado de Casos de uso del negocioMagemyl Egana
 
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptxCiberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptxcorreafrancoci00
 
CIBERSEGURIDAD Y SEGURIDAD INFORMÁTICA.pptx
CIBERSEGURIDAD  Y SEGURIDAD INFORMÁTICA.pptxCIBERSEGURIDAD  Y SEGURIDAD INFORMÁTICA.pptx
CIBERSEGURIDAD Y SEGURIDAD INFORMÁTICA.pptxalzabenjaminci00
 
El necesario mal del Legacy Code (Drupal Iberia 2024)
El necesario mal del Legacy Code (Drupal Iberia 2024)El necesario mal del Legacy Code (Drupal Iberia 2024)
El necesario mal del Legacy Code (Drupal Iberia 2024)Samuel Solís Fuentes
 
Tipos de datos en Microsoft Access definiciones.pdf
Tipos de datos en Microsoft Access definiciones.pdfTipos de datos en Microsoft Access definiciones.pdf
Tipos de datos en Microsoft Access definiciones.pdfCarlosSanchez452245
 
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptxTECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptxUPSE
 
Especificación casos de uso del negocio
Especificación  casos de uso del negocioEspecificación  casos de uso del negocio
Especificación casos de uso del negocioMagemyl Egana
 
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdfTECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdfUPSE
 
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...juanforero141
 

Último (9)

Modelado de Casos de uso del negocio
Modelado de  Casos  de  uso  del negocioModelado de  Casos  de  uso  del negocio
Modelado de Casos de uso del negocio
 
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptxCiberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
Ciberseguridad y Seguridad Informática Franco Correa Grupo B.pptx
 
CIBERSEGURIDAD Y SEGURIDAD INFORMÁTICA.pptx
CIBERSEGURIDAD  Y SEGURIDAD INFORMÁTICA.pptxCIBERSEGURIDAD  Y SEGURIDAD INFORMÁTICA.pptx
CIBERSEGURIDAD Y SEGURIDAD INFORMÁTICA.pptx
 
El necesario mal del Legacy Code (Drupal Iberia 2024)
El necesario mal del Legacy Code (Drupal Iberia 2024)El necesario mal del Legacy Code (Drupal Iberia 2024)
El necesario mal del Legacy Code (Drupal Iberia 2024)
 
Tipos de datos en Microsoft Access definiciones.pdf
Tipos de datos en Microsoft Access definiciones.pdfTipos de datos en Microsoft Access definiciones.pdf
Tipos de datos en Microsoft Access definiciones.pdf
 
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptxTECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
TECNOLOGIA DE LA INFORMACION Y MULTIMEDIA 15 MAYO.pptx
 
Especificación casos de uso del negocio
Especificación  casos de uso del negocioEspecificación  casos de uso del negocio
Especificación casos de uso del negocio
 
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdfTECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
TECNOLOGÍA DE LA INFORMACIÓN SLIDESHARE INVESTIGACION.pdf
 
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
serenidad APP presentacion.pdfes una innovadora aplicación móvil diseñada par...
 

Teoría del curso de postgresql desde cero

  • 1. Curso de Bases de Datos desde Cero Bienvenidos
  • 2. Herramientas a Usar: S.O. Windows S.O. Linux (Ubuntu) SGBD Postgresql Consola de Comandos – Terminal Cliente PgAdmin
  • 4. ¿Qué es una Base de Datos? Una base de datos es un conjunto de información organizada que cumple con un objetivo común. Sin embargo, hablando desde el punto de vista tecnológico, estas bases de datos deben estar almacenadas de manera persistente en un medio electrónico/digital.
  • 5. Características que debe cumplir una BD: • Versatilidad en la representación de la información. • Desempeño. • Mínima Redundancia. • Capacidad de Acceso. (Compartida y concurrente). • Simplicidad. • Integridad. • Seguridad y Privacidad.
  • 6. SGBD Sistema Gestor de Bases de Datos. (DBMS) Es la herramienta de software que permite administrar una base de datos. • Crear • Modificar • Poblar • Actualizar • Seleccionar • Borrar • Administrar privilegios Dentro de los SGBD Relacionales más conocidos están: • MySQL • Sql Server • Oracle • DB2 • Informix Para el presente curso utilizaremos el SGBDR Llamado Postgresql. Dentro de los SGBD No Relacionales más conocidos: • MongoDB • FireBase • CouchDB • Neo4j • Cassandra
  • 8. Fases del diseño de las bases de datos • Diseño Conceptual • Diseño Lógico • Diseño Físico
  • 9. Diseño Conceptual Modelo Entidad Relación - MER ENTIDAD ENTIDAD RELACIÓN Atributo1 Atributo2 Atributo3 Atributo1 Atributo2 Atributo3
  • 10. Conceptos Entidad: Representa un objeto/elemento del Universo de discurso (Del problema a resolver). ENTIDAD
  • 11. Conceptos Entidad Débil: Representa un objeto/elemento del Universo de discurso (Del problema a resolver) pero que necesita de una relación con otra entidad para su identificación. ENTIDAD
  • 12. Conceptos Relación: Representa el tipo de relación entre entidades. Relación
  • 13. Conceptos Relación con dependencia de identificación: Representa el tipo de relación que identifica la dependencia entre entidades. Relación
  • 14. Conceptos ROL: Es la representación de la unión entre las relaciones y las entidades. (Conector).
  • 15. Conceptos Atributos: Representan las características de las entidades. Nombre_atributo Nombre_atributo
  • 16. Tipos de Atributos Atributo simple y monovaluado Atributo Identificador Principal Atributo Identificador Alternativo Atributo multivaluado Atributo Opcional Atributo Compuesto
  • 17. Restricciones Tipo de Correspondencia de cardinalidades Número máximo de ejemplares de una entidad asociados a una combinación de ejemplares de las otras entidades en la interrelación, que puede ser 1 o N. Persona Posee Vehículo 1:N
  • 18. Restricciones Cardinalidades Máximas y Mínimas Son el número máximo y mínimo de ejemplares de una entidad que puede relacionarse con un único ejemplar de la otra entidad que participa en la interrelación. Se representan como (0,1), (1,1), (0,N), (1,N) y se situan en la línea que conecta la entidad con el rombo que representa el tipo de interrelación. Persona Posee Vehículo 1:N (0,1) (0,N)
  • 19. Conceptos Ejemplo de Relación. Persona Nombre Edad Estatura Posee Vehículo Placa Modelo Color 1:N
  • 21. Ejemplo: Se requiere un sistema de información que permita gestionar la información de los Arriendos/Alquileres de las viviendas. Este sistema debe contener la información del propietario de la(s) vivienda(s) y la información que se debe contemplar para dicho propietario es: identificación, nombre completo, teléfonos de contacto y opcionalmente el correo electrónico. La(s) vivienda(s) deben tener la información de: código de la vivienda, dirección, la cual está compuesta por: calle y número, la vivienda debe tener además una descripción y la cantidad de habitantes. Cada vivienda se encuentra ubicada en una ciudad y dicha ciudad pertenece a un departamento/estado. Se debe tener la información de los arriendos/alquileres los cuales tendrán la información de: fecha de inicio, fecha de fin, valor mensual. Y también se requiere conocer la información del (los) inquilino(s), la información de este debe ser: identificación, nombre completo y teléfonos.
  • 25. PROPIETARIO Identifi. nombre nombres apellidos telefonos email VIVIENDA código dirección calle número descripción cant_habitantes CIUDAD código nombre DEPARTAMENTO código nombre
  • 26. PROPIETARIO Identifi. nombre nombres apellidos telefonos email VIVIENDA código dirección calle número descripción cant_habitantes CIUDAD código nombre DEPARTAMENTO código nombre ARRIENDO código f_inicio f_fin valor_mensual
  • 27. PROPIETARIO Identifi. nombre nombres apellidos telefonos email VIVIENDA código dirección calle número descripción cant_habitantes CIUDAD código nombre DEPARTAMENTO código nombre ARRIENDO código f_inicio f_fin valor_mensual INQUILINO Identifi. nombre nombres apellidos telefonos
  • 28. PROPIETARIO Identifi. nombre nombres apellidos telefonos email VIVIENDA código dirección calle número descripción cant_habitantes Posee 1:N CIUDAD código nombre DEPARTAMENTO código nombre ARRIENDO código f_inicio f_fin valor_mensual INQUILINO Identifi. nombre nombres apellidos telefonos (1:N) (1:1)
  • 29. PROPIETARIO Identifi. nombre nombres apellidos telefonos email VIVIENDA código dirección calle número descripción cant_habitantes Posee 1:N CIUDAD Ubicada N:1 código nombre DEPARTAMENTO código nombre ARRIENDO código f_inicio f_fin valor_mensual INQUILINO Identifi. nombre nombres apellidos telefonos (1:N) (1:1) (0:N) (1:1)
  • 30. PROPIETARIO Identifi. nombre nombres apellidos telefonos email VIVIENDA código dirección calle número descripción cant_habitantes Posee 1:N CIUDAD Ubicada N:1 código nombre DEPARTAMENTO Pertenece código nombre N:1 ARRIENDO código f_inicio f_fin valor_mensual INQUILINO Identifi. nombre nombres apellidos telefonos (1:N) (1:1) (0:N) (1:1) (1:N) (1:1)
  • 31. PROPIETARIO Identifi. nombre nombres apellidos telefonos email VIVIENDA código dirección calle número descripción cant_habitantes Posee 1:N CIUDAD Ubicada N:1 código nombre DEPARTAMENTO Pertenece código nombre N:1 ARRIENDO código f_inicio f_fin valor_mensual Participa 1:N INQUILINO Identifi. nombre nombres apellidos telefonos (1:N) (1:1) (0:N) (1:1) (1:N) (1:1) (1:1) (0:N)
  • 32. PROPIETARIO Identifi. nombre nombres apellidos telefonos email VIVIENDA código dirección calle número descripción cant_habitantes Posee 1:N CIUDAD Ubicada N:1 código nombre DEPARTAMENTO Pertenece código nombre N:1 ARRIENDO código f_inicio f_fin valor_mensual Participa 1:N INQUILINO Identifi. nombre nombres apellidos telefonos Realizado N:M (1:N) (1:1) (0:N) (1:1) (1:N) (1:1) (1:1) (0:N) (1:N) (1:N)
  • 33. Diseño Lógico Modelo Relacional - MR R(atributo1, atributo2, atributo3, …, atributoN)
  • 34. Traducción del MER al MR: Persona Nombre Edad Estatura ENTIDADES, ATRIBUTOS SIMPLES Y MONOVALUADOS RELACIONES Y ATRIBUTOS PERSONA(Nombre, Edad, Estatura) dominio(Nombre) : carácter de tamaño n dominio(Edad): entero de 0 hasta 150 dominio(Estatura): decimal de 0 hasta 2.90
  • 35. Traducción del MER al MR: Persona Nombre Edad Email ENTIDADES, ATRIBUTOS OPCIONALES RELACIONES Y ATRIBUTOS PERSONA(Nombre, Edad, Email*)
  • 36. Traducción del MER al MR: Persona Nombre ENTIDADES, ATRIBUTOS COMPUESTOS RELACIONES Y ATRIBUTOS PERSONA(Nombre_Nombres, Nombre_Apellidos, Edad) dominio(Nombre_Nombres) : carácter de tamaño n dominio(Nombre_Apellidos) : carácter de tamaño n dominio(Edad): entero de 0 hasta 150 Nombres Apellidos Edad
  • 37. Traducción del MER al MR: Persona Nombre ENTIDADES, ATRIBUTOS MULTIVALUADOS RELACIONES Y ATRIBUTOS PERSONA(Nombre, Edad) Teléfonos Edad TELEFONOS(Telefono)
  • 38. Traducción del MER al MR: Persona Nombre ENTIDADES, ATRIBUTOS MULTIVALUADOS CLAVES PRIMARIAS Y CLAVES FORANEAS RELACIONES Y ATRIBUTOS PERSONA(Nombre, Edad) Teléfonos Edad TELEFONOS(Nombre, Telefono) TELEFONOS(Nombre, Telefono) PERSONA O
  • 39. Traducción del MER al MR: RELACIONES CARDINALIDAD 1:1 PERSONA CARNET Tiene un 1:1 PERSONA(Nombre, edad, dirección, Codigo) CARNET(Codigo, Nombre, cargo, tiposangre)
  • 40. Traducción del MER al MR: RELACIONES CARDINALIDAD 1:N PERSONA VEHÍCULO Posee 1:N PERSONA(Nombre, edad, dirección) VEHÍCULO(Nombre, modelo, color)
  • 41. Traducción del MER al MR: RELACIONES CARDINALIDAD N:M ALUMNO MATERIA Matricula N:M ALUMNO(identificacion, nombre, edad) MATERIA(codigo, nombre, salon, horario) MATRICULA(identificacion, codigo)
  • 42. PROPIETARIO Identifi. nombre nombres apellidos telefonos email VIVIENDA código dirección calle número descripción cant_habitantes Posee 1:N CIUDAD Ubicada N:1 código nombre DEPARTAMENTO Pertenece código nombre N:1 ARRIENDO código f_inicio f_fin valor_mensual Participa 1:N INQUILINO Identifi. nombre nombres apellidos telefonos Realizado N:M (1:N) (1:1) (0:N) (1:1) (1:N) (1:1) (1:1) (0:N) (1:N) (1:N)
  • 43. PROPIETARIO(identificacion, nom_nombres, nom_apellidos, email*) TELEFONOS(identificación, telefono) VIVIENDA(código, dir_calle, dir_numero, cant_habitantes, descripción, identificación, codigo_ciudad) CIUDADES(codigo_ciudad, nombre, departamento) DEPARTAMENTO(codigo_departamento, nombre) ARRIENDO(codigo, f_inicio, f_fin, valor_mensual, codigo_vivienda) INQUILINO(identificacion, nom_nombres, nom_apellidos) TELEFONOS_INQUILINOS(identificación, telefono) ARRIENDO_INQUILINO(codigo, identificacion) Modelo Relacional
  • 44. PROPIETARIO(identificacion, nom_nombres, nom_apellidos, email*) TELEFONOS(identificación, telefono) VIVIENDA(código, dir_calle, dir_numero, cant_habitantes, descripción, identificación, codigo_ciudad) CIUDADES(codigo_ciudad, nombre, departamento) DEPARTAMENTO(codigo_departamento, nombre) ARRIENDO(codigo, f_inicio, f_fin, valor_mensual, codigo_vivienda) INQUILINO(identificacion, nom_nombres, nom_apellidos) TELEFONOS_INQUILINOS(identificación, telefono) ARRIENDO_INQUILINO(codigo, identificacion) Modelo Relacional
  • 45. Representación Tabular R { (atributo1, atributo2, atributo3, …, atributoN), (atributo1, atributo2, atributo3, …, atributoN), (atributo1, atributo2, atributo3, …, atributoN), … (atributo1, atributo2, atributo3, …, atributoN) }
  • 46. Restricciones: • Restricción Nulo: No permite que el valor del atributo sea nulo. • Restricción de Identidad: No permite tener dos valores repetidos en las claves primarias. • Restricción de Integridad de Entidad: No permite tener valores nulos en la clave primaria. • Restricción de Integridad Referencial: No permite tener valores en la clave foránea que no existan en la clave primaria. Sin embargo, si permite tener valores nulos en la clave foránea. • Restricción de Clave Alterna: No permite valores repetidos en la clave alterna. • Restricción de Dominio: Los datos deben ser del dominio específico. Ejemplo: dominio de los números enteros comprendidos entre 0 y 18.
  • 47. Operaciones Transaccionales • INSERCIÓN • ELIMINACIÓN • ACTUALIZACIÓN
  • 49. Violaciones de Restricciones OPERACIÓN IDENTIDAD ENTIDAD REFERENCIAL UNICA DOMINIO NULO INSERTAR SI Sin Alternativas SI Sin Alternativas SI Alternativa NULO SI Alternativa NULO SI Sin Alternativas SI Alternativa VALOR X DEFECTO ELIMINAR NO NO SI (Si es de la tabla padre que contiene información en las tablas hijo) Alternativa NULIFICAR, CASCADA, RESTRINGIR NO NO NO ACTUALIZAR SI Sin Alternativas SI Sin Alternativas SI (Padre a Hijo) Alternativas iguales a Eliminar. SI Alternativa NULO SI Sin Alternativas SI Sin Alternativas
  • 50. Lenguaje SQL Structured Query Language por sus siglas en inglés. Lenguaje de consulta estructurado, es el lenguaje estándar para la administración de la información en los SGBDR.
  • 51. Los 3 principales Grupos de SQL • DDL: Lenguaje de Definición de Datos (Data Definition Language). • DML: Lenguaje de Manipulación de Datos (Data Manipulation Language). • DCL: Lenguaje de Control de Acceso a Datos (Data Control Language).
  • 52. DDL – Data Definition Language CREAR MODIFICAR BORRAR
  • 53. DDL – CREAR Usuarios Bases de Datos Tablas
  • 54. DDL – CREAR USUARIOS CREATE USER nombre PASSWORD ‘contraseña’
  • 55. DDL – CREAR BASES DE DATOS CREATE DATABASE nombre OWNER = usuario TABLESPACE = el_tablespace
  • 56. DDL – CREAR TABLAS
  • 57. DDL – CREAR TABLAS CREATE TABLE nombre_tabla ( columna1 tipo_dato, columna2 tipo_dato (tamaño), columna3 tipo_dato NOT NULL, columna4 tipo_dato DEFAULT valor_x_defecto, columna5 SERIAL, CONSTRAINT nombre_constraint1 CHECK (columnaN > valor and columaN < valor), CONSTRAINT nombre_constraint2 PRIMARY KEY (columnaN, …, columnaM), CONSTRAINT nombre_constraint3 UNIQUE (columnaN, …, columnaM), CONSTRAINT nombre_constraint4 FOREIGN KEY (columnaN, … columnaM) REFERENCES otra_tabla(columnaN, … columnaM) ON DELETE acción ON UPDATE accion )
  • 59. DDL – MODIFICAR BD. ALTER DATABASE nombre RENAME TO nuevo_nombre ALTER DATABASE nombre OWNER TO nuevo_usuario ALTER DATABASE nombre SET TABLESPACE nuevo_tablespace
  • 60. DDL – MODIFICAR TABLAS. ALTER TABLE nombre ADD COLUMN campoN tipo_dato (tamaño) ALTER TABLE nombre DROP COLUMN campoN ALTER TABLE nombre ALTER COLUMN campoN SET NOT NULL ALTER TABLE nombre ALTER COLUMN campoN DROP NOT NULL ALTER TABLE nombre ADD CONSTRAINT nombre_constraint FOREIGN KEY (campoN, … campoM) REFERENCES otra_tabla (campoN, …, campoM) ON DELETE acción ON UPDATE acción ALTER TABLE nombre DROP CONSTRAINT nombre_constraint ALTER TABLE nombre ALTER COLUMN campoN SET DEFAULT valor_x_defecto ALTER TABLE nombre ALTER COLUMN campoN DROP DEFAULT ALTER TABLE nombre ALTER COLUMN campoN TYPE nuevo_tipo (tamaño) ALTER TABLE nombre RENAME COLUMN columnaN TO columnaM ALTER TABLE nombre RENAME TO nuevo_nombre
  • 61. DDL – BORRAR Usuarios DROP USER nombre Bases de Datos DROP DATABASE nombre Tablas DROP TABLE nombre
  • 62. DCL – GRANT and REVOKE GRANT: Permite realizar una acción sobre un objeto. GRANT acción ON objeto TO usuario REVOKE: Restringe realizar una acción sobre un objeto. REVOKE acción ON objeto FROM usuario
  • 63. DML – Manipulación de Datos INSERT: Ingresar información UPDATE: Modificar Información DELETE: Borrar Información
  • 64. DML – INSERT INSERT INTO tabla (campo1, campo2, …, campoN) VALUES (valor1, valor2, …., valorN) INSERT INTO tabla (campo5, campo3, campo1, campo18, …, campoN) VALUES (valor5, valor1, valor18, …, valorN) INSERT INTO tabla VALUES (valor1, valor2, …, valorN) INSERT INTO tabla VALUES (DEFAULT, valorN, valorM, …, valorZ) INSERT INTO tabla VALUES (valorA1, valorA2, … valorAN), (valorB1, valorB2, …, valorBN), (valorC1, valorC2, … valorCN) INSERT INTO tabla SELECT consulta_aqui
  • 65. DML – UPDATE UPDATE tabla SET campo1 = valor1, campo2 = valor2, …, campoN = valorN WHERE campoM = valorM Where: WHERE campoM = valorM (=, >, <, <>) WHERE campoM BETWEEN valor1 AND valor2 WHERE campoM IN (valor1, valor2, …, valorN) WHERE campoM IN SELECT consulta WHERE campoM NOT IN…
  • 66. DML – DELETE DELETE FROM tabla WHERE campoN = valorN Where: WHERE campoM = campoM (=, >, <, <>) WHERE campoM BETWEEN valor1 AND valor2 WHERE campoM IN (valor1, valor2, …, valorN) WHERE campoM IN SELECT consulta WHERE campoM NOT IN…
  • 68. PROYECCIÓN Permite filtrar las columnas / atributos que se quieren mostrar de una relación. SELECT campo1, campo2, …, campoN FROM tabla
  • 69. RENOMBRAMIENTO Permite renombrar la relación o los atributos de una relación. R(a1, a2, …, aN) -> S(a1, a2, …, aN) R(a1, a2, …, aN) -> R(b1, b2, …, bN) R(a1, a2, …, aN) -> S(b1, b2, …, bN)
  • 70. RENOMBRAMIENTO SELECT * FROM TABLA1 AS NUEVO_NOMBRE SELECT campo1 AS nombre, campo2 AS apelli FROM TABLA1 AS integrantes
  • 71. SELECCIÓN Se conoce también como FILTRO. Y nos permite seleccionar solamente unos registros de una relación que cumplen con uno o varios criterios. SELECT campo1, campo2, …, campoN FROM tabla WHERE campo1 {cumple la condición}
  • 72. UNIÓN Dos relaciones son compatibles en unión si sus dominios coinciden en número y en orden. Y es la disyunción de los conjuntos. Es decir, el elemento está en uno o en el otro conjunto. R1(a1, a2, …, an) R2(b1, b2, …, bn) dominio R1(ai) = dominio R2(bi)
  • 73. UNIÓN SELECT campo1, campo2, …, campoN FROM tabla1 UNION [ ALL ] SELECT otro1, otro2, …, otroN FROM tabla2
  • 74. INTERSECCIÓN Dos relaciones son compatibles en intersección si sus dominios coinciden en número y en orden. Y es la conjunción de los conjuntos. Es decir, el elemento tiene que estar en ambos conjuntos. R1(a1, a2, …, an) R2(b1, b2, …, bn) dominio R1(ai) = dominio R2(bi)
  • 75. INTERSECCIÓN SELECT campo1, campo2, …, campoN FROM tabla1 INTERSECT SELECT otro1, otro2, …, otroN FROM tabla2
  • 76. INTERSECCIÓN - EQUIVALENCIA SELECT campo1, campo2, …, campoN FROM tabla1 WHERE (campo1, campo2, …, campoN) IN (SELECT otro1, otro2, …, otroN FROM tabla2)
  • 77. DIFERENCIA Dos relaciones son compatibles en diferencia si sus dominios coinciden en número y en orden. Y es la diferencia de los conjuntos. Es decir, el elemento tiene que estar en el primer conjunto, pero no en el segundo. R1(a1, a2, …, an) R2(b1, b2, …, bn) dominio R1(ai) = dominio R2(bi)
  • 78. DIFERENCIA SELECT campo1, campo2, …, campoN FROM tabla1 EXCEPT SELECT otro1, otro2, …, otroN FROM tabla2
  • 79. DIFERENCIA - EQUIVALENCIA SELECT campo1, campo2, …, campoN FROM tabla1 WHERE (campo1, campo2, …, campoN) NOT IN (SELECT otro1, otro2, …, otroN FROM tabla2)
  • 80. PRODUCTO CARTESIANO El producto cartesiano no exige la compatibilidad de dominios ni en número ni en orden. R1(a1, a2, a3, a4, …, aN) R2(b1, b2, …, bX) Q(a1, a2, a3, a4, …, aN, b1, b2, …, bX)
  • 82. CROSS JOIN Es el resultado del producto cartesiano de las relaciones que intervienen en la combinación. SELECT a.campo1, a.campo2, …, a.campoN, b.campo1, b.campo2, …, FROM tabla1 as a CROSS JOIN tabla2 as b
  • 83. NATURAL JOIN Combina dos relaciones de manera natural entre la clave primaria de una y la clave foránea de la otra. SELECT a.campo1, a.campo2, …, a.campoN, b.campo1, b.campo2, …, FROM tabla1 as a NATURAL INNER JOIN tabla2 as b
  • 84. INNER JOIN Combina dos relaciones cuando se necesita especificar el (los) atributo(s) con los que se combinarán. SELECT a.campo1, a.campo2, …, a.campoN, b.campo1, b.campo2, …, FROM tabla1 as a INNER JOIN tabla2 as b ON a.campo1 = b.campo1
  • 85. LEFT JOIN Combina dos relaciones realizando primero un INNER JOIN y luego añade todas aquellas filas (registros) de la relación nombrada en la parte izquierda de la sentencia que no satisfacen la combinación con la relación de la parte derecha. SELECT a.campo1, a.campo2, …, a.campoN, b.campo1, b.campo2, …, FROM tabla1 as a LEFT JOIN tabla2 as b ON a.campo1 = b.campo1
  • 86. RIGHT JOIN Combina dos relaciones realizando primero un INNER JOIN y luego añade todas aquellas filas (registros) de la relación nombrada en la parte derecha de la sentencia que no satisfacen la combinación con la relación de la parte izquierda. SELECT a.campo1, a.campo2, …, a.campoN, b.campo1, b.campo2, …, FROM tabla1 as a RIGHT JOIN tabla2 as b ON a.campo1 = b.campo1
  • 87. FULL JOIN Combina dos relaciones realizando primero un INNER JOIN y luego realiza un Left Join y por último un Right Join. SELECT a.campo1, a.campo2, …, a.campoN, b.campo1, b.campo2, …, FROM tabla1 as a FULL JOIN tabla2 as b ON a.campo1 = b.campo1
  • 89. ¿PARA QUÉ SIRVE? La normalización se utiliza para verificar si una relación no tiene problemas como: • Redundancia. • Problemas de: • Inserción • Actualización • Borrado
  • 90. Cálculo de las DEPENDENCIAS FUNCIONALES En una relación: R(Atributos, Dependencias) Atributos: {A, B} B depende funcionalmente de A si para cada valor de A solamente existe un valor de B. Notación: A -> B Ejemplo: Identificacion -> Nombre
  • 91. Cálculo de las DEPENDENCIAS REDUNDANTES En una relación: R(Atributos, Dependencias) Atributos: {A, B, C} Dependencias: {A->B; B->C; A->C} La dependencia A->C es redundante ya que C depende transitivamente de A.
  • 92. Cálculo de las CLAVES CANDIDATAS En una relación: R(Atributos, Dependencias) Atributos: {A, B, C, D} Dependencias: {A->B,D; B->C;} A+ = {A,B,C,D}, B+{B, C}, C+{C}, D+{D}. Por lo tanto la superclave será A ya que este atributo puede determinar toda la R.
  • 94. Descripción 1FN • Cada atributo es simple. • Cada atributo es monovaluado. 2FN • Se encuentra en 1FN. • Cada atributo no principal tiene DF de la clave candidata. 3FN • Se encuentra en 2FN. • No existe ningún atributo no principal que dependa transitivamente de clave candidata. FNBC • Si y solo si todo determinante es la clave candidata.
  • 95. Ejemplos: 1FN NOMBRE SKILLS ALVARO FELIPE HTML, CSS, JAVASCRIPT ALEXYS LOZADA JAVA, JAVASCRIPT, DBA NOMBRE SKILLS ALVARO FELIPE HTML ALVARO FELIPE CSS ALVARO FELIPE JAVASCRIPT ALEXYS LOZADA JAVA ALEXYS LOZADA JAVASCRIPT ALEXYS LOZADA DBA
  • 96. Ejemplos: 2FN ESTUDIANTE MATERIA NOTA SALON PEDRO MATEMÁTICAS 5 204 PABLO MATEMÁTICAS 4 204 JUAN ESPAÑOL 4 111 ESTUDIANTE MATERIA NOTA PEDRO MATEMÁTICAS 5 PABLO MATEMÁTICAS 4 JUAN ESPAÑOL 4 MATERIA SALON MATEMÁTICAS 204 ESPAÑOL 111
  • 97. Ejemplos: 3FN Materia Salón Teléfono MATEMÁTICAS 101 3333333 ESPAÑOL 201 4444444 BIOLOGÍA 104 2121212 Materia Salón MATEMÁTICAS 101 ESPAÑOL 201 BIOLOGÍA 104 Salón Teléfono 101 3333333 201 4444444 104 2121212
  • 98. Ejemplos: FNBC IDENTIFICACION NOMBRE MATERIA NOTA 123 PEDRO MATEMATICAS 3 123 PEDRO ESPAÑOL 4 233 PABLO MATEMATICAS 4 IDENTIFICACION NOMBRE 123 PEDRO 233 PABLO IDENTIFICACION MATERIA NOTA 123 MATEMATICAS 3 123 ESPAÑOL 4 233 MATEMATICAS 4
  • 99. Proceso de normalización Atributos = {A1, A2, …, An} Dependencias = {D1, D2, … Dn} Atributos = {A1, …, Ai} Dependencias = {D1, …, Di} Atributos = {Ai, …, An} Dependencias = {Dj+, … Dn} Atributos = {A1, …, Ak} Dependencias = {Dj+1, …, Ds} Atributos = {Al, …, An} Dependencias = {Dl, … Dn}
  • 100. Ejemplo Profesor Oficina Teléfono Materia Créditos Libro Autor Año Pedro 101 2454545 MATEMÁTICAS 5 ALGEBRA BALDOR 1970 Pedro 101 2454545 ESPAÑOL 3 LITERATURA ANÓNIMO 1950 Pablo 105 5414141 MATEMÁTICAS 5 CÁLCULO I BOUNETE 1985 Pablo 105 5414141 MATEMÁTICAS II 4 CÁLCULO I BOUNETE 1985 Pablo 105 5414141 GEOGRAFÍA 2 ALGEBRA BALDOR 1970 Juan 102 3696969 CONTABILIDAD 1 IMPUESTOS ANTORINI 1999 Lucas 103 4585858 CONTABILIDAD 1 IMPUESTOS ANTORINI 1999 Lucas 103 4585858 MATEMÁTICAS 3 5 CÁLCULO 2 BEYONCE 1986 Lucas 103 4585858 ESPAÑOL 3 LENGUAS GAITÁN 1980
  • 101. Problemas Inserción: • No se puede ingresar un Profesor si no se le ha asignado una materia la cual debe tener a su vez un libro y salón. • No se puede ingresar una Materia si no existe un profesor asignado y un libro y un salón. • Etc… Borrado: • No se puede borrar un solo registro si se quiere eliminar un profesor. • No se puede borrar un solo registro si se quiere eliminar un libro. • “ “ “ “ “ “ una materia. • Si se eliminan los registros de un profesor, se estaría borrando la información de las materias. • Si se elimina la única materia que dicta un profesor, se pierde la información de dicho profesor.
  • 102. Encontrando las DF Un profesor tiene una única oficina y un único teléfono: • Profesor -> Oficina, Teléfono Una oficina tiene un único teléfono • Oficina -> Teléfono Una materia tiene un número de créditos • Materia -> Créditos Un libro tiene un autor y año de edición • Libro -> Autor, Año Un profesor puede dictar más de una materia • Profesor -- / -> Materia Una materia tiene más de un profesor • Materia -- / -> Profesor Un profesor en una materia utiliza un solo libro el cual tiene un autor y un año de edición • Profesor, Materia -> Libro, Autor, Año
  • 103. Encontrando las DF (Resumen) Dependencias: { Profesor -> Oficina, Teléfono Oficina -> Teléfono Materia -> Créditos Libro -> Autor, Año Profesor -- / -> Materia Materia -- / -> Profesor Profesor, Materia -> Libro, Autor, Año }
  • 104. Encontrando las DF (Resumen) Dependencias: { Profesor -> Oficina Oficina -> Teléfono Materia -> Créditos Libro -> Autor, Año Profesor, Materia -> Libro }
  • 105. Atr = {P,O,T,M,C,L,A,Ñ} Dep = {P->O; O->T; M->C; L->A,Ñ; P,M->L} Atr1 = {L,A,Ñ} Dep1 = {L->A,Ñ} Atr1’ = {P,O,T,M,C,L} Dep1’ = {P->O; O->T; M->C; P,M->L} Atr2 = {M,C} Dep2 = {M->C} Atr2’ = {P,O,T,M,L} Dep2’ = {P->O; O->T; P,M->L} Atr3 = {O,T} Dep3 = {O->T} Atr3’ = {P,O,M,L} Dep3’ = {P->O; P,M->L} Atr4 = {P,O} Dep4 = {P->O} Atr5 = {P,M,L} Dep5 = {P,M->L}
  • 106. Proyecto Final Sistema de Compra y Venta
  • 107. Universo de Discurso Se requiere un sistema de información que nos permita realizar la compra y venta de productos a diferentes proveedores y clientes. El sistema debe tener un proceso de login para poder realizar las acciones de compra y venta. Los productos deben tener la siguiente información: codigo, nombre, cantidad y precio. Los proveedores y clientes deben tener la siguiente información: identificación, nombre, dirección y teléfono. Las compras deben tener la información de fecha, proveedor, producto, cantidad y valor. Las ventas deben tener: la fecha, el cliente, el producto, cantidad y valor de venta. Se debe tener la información de auditoría cuando se haga una compra o una venta o cuando se modifique la información del producto. Cuando se realice una compra se debe incrementar la cantidad del producto y cuando se realice una venta se deberá disminuir la cantidad del producto vendido. Se debe poder consultar la información de las ventas detalladas, compras detalladas y del inventario actual.
  • 108. PERFIL USUARIO Id perfil Id usuario clave nombre Tiene TERCERO Id identificación nombre dirección teléfono PRODUCTO Id nombre cantidad precio Actualiza COMPRA Id fecha cantidad valor Realiza A-un Tiene 1:N 1:N AUDITORIA Id fecha acción tabla anterior nuevo Audita N:1 1:N 1:N N:1