Fundamentos de Bases de Datos y Sistemas de Gestión: Conceptos Clave y Ejemplos SQL
Enviado por Palmero y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 6,52 KB
Fundamentos de Bases de Datos y Sistemas de Gestión
BD: Es un conjunto de datos relacionados entre sí, organizados y estructurados con información referente a algo.
SGBD: Es una aplicación que permite a los usuarios definir, crear y mantener la BD.
Funciones críticas en un SGBD:
- Soporte para atender múltiples usuarios en forma concurrente (compartir los datos)
- Seguridad de los datos almacenados en la base de datos: Autorización (Control de accesos)
- Recuperación de caídas del sistema
- Eficiencia en el acceso a los datos
- Integridad de los datos
Desventajas de las antiguas BBDD:
- Redundancia incontrolada
- Datos inconsistentes
- Inflexibilidad
- Compartición de datos limitada
- No hay tendencia a estándares
- Baja productividad de los programadores
- Costo excesivo de mantención de programas
Ventajas de los SGBD:
- Los datos se comparten (la información es un recurso de la organización)
- Control de la redundancia de la información
- Control de la consistencia en la información
- Se mejoran los estándares con respecto a los datos
- Mejora la seguridad de los datos (control de accesos)
- Mejora la integridad de los datos (restricciones de integridad)
- Permite balancear requerimientos en conflicto
- Mejora el tiempo de desarrollo de nuevas aplicaciones
- Mejora la accesibilidad a los datos (query languages)
- Economía de escala (producto de la asignación centralizada de los recursos)
- Mejor control de acceso concurrente a los datos
- Se dispone de procedimientos de respaldo (Back - Up) y recuperación
Desventajas de los SGBD:
- Alto costo de un DBMS
- Mayor costo de hardware
- Mayor costo de programación
- Costo de conversión es alto
- Procesamiento más lento de algunas aplicaciones
- Se incrementa la vulnerabilidad (los recursos son centralizados)
- Mayor dificultad en la recuperación
Pasos para el Diseño MER
- Identificar las entidades.
- Identificar las relaciones.
- Identificar los atributos y asociarlos a entidades y relaciones.
- Determinar los dominios de los atributos.
- Determinar los identificadores.
- Determinar las jerarquías de generalización (si las hay).
- Dibujar el diagrama entidad-relación.
- Revisar el esquema conceptual local con el usuario (diseño conceptual)
Tipos de MER:
- 1:1 cuando un registro se puede relacionar con otro de otra entidad.
- 1:N cuando un registro se puede relacionar con muchos de otra entidad.
- N:M: cuando un registro de una entidad puede relacionarse con muchos de otra y viceversa.
DDL (Lenguaje de Definición de Datos)
DML (Lenguaje de Manipulación de Datos)
DCL (Lenguaje de Control de Datos) ==> SQL
Formas Normales:
1FN: solo si cada uno de los campos contienen un valor único para un registro determinado.
2FN: hace una comparación de todos los campos de la tabla con la clave definida. Todos los campos dependen directamente de la clave.
3FN: solo si los campos dependen únicamente de la clave y no unos de otros.
4FN: solo si para cualquier información campo clave no hay valores duplicados.
Ejemplos de Consultas SQL
1. Consultar los datos del empleado con mayor antigüedad en la empresa. (utiliza la cláusula IN o la ALL)
SELECT nombre, f_contrato
FROM empleados
WHERE f_contrato IN (SELECT MIN(f_contrato) FROM empleado)
LIMIT 1
2. Consultar los datos del empleado que ha realizado la última venta. (utiliza una subconsulta con operador = )
SELECT *
FROM empleados
WHERE emp = (SELECT emp FROM ventas ORDER BY f_venta DESC LIMIT 1)
3. Consultar todos los datos de los artículos cuya descripción contenga la palabra “disco”.
SELECT *
FROM articulos
WHERE desc LIKE '%disco%'
4. Aumentar el sueldo en un 2% a los empleados que tengan una antigüedad superior a 10 años.
UPDATE empleados
SET sueldo = sueldo * 1.02
WHERE YEAR(CURDATE()) - YEAR(f_contrato) > 10
5. Calcular cuantas oficinas hay en cada provincia.
SELECT provincia, COUNT(oficina)
FROM oficinas
GROUP BY provincia ASC
6. Mostrar los datos del empleado con mayor cantidad de ventas.
SELECT e.*, MAX(v.cantidad) AS cantidad
FROM empleados e INNER JOIN ventas v ON e.emp = v.emp
GROUP BY e.nombre
LIMIT 1
7. Crear una vista de los artículos que incluya el código del artículo, el precio y la comisión en euros (no en tanto por ciento)
CREATE VIEW vista_articulos AS
SELECT art, precio AS Precio_Euros, comision, precio * (comision / 100) AS Comision_Euros
FROM articulos
GROUP BY art ASC
8. Calcular la factura total de las ventas de cada empleado hasta el momento. (Utiliza la unión de tablas a través del operador =)
SELECT e.emp,
e.nombre,
e.objetivoVentas,
SUM(v.cantidad) AS Total_Cantidad,
a.desc,
a.precio AS Precio_Unidad,
(v.cantidad * a.precio) - (v.cantidad * a.precio) * (a.desc / 100) AS Total_Precio
FROM empleados e LEFT JOIN ventas v ON e.emp = v.emp
LEFT JOIN articulos a ON a.art = v.art
GROUP BY e.emp ASC
9. Crea la tabla artículos.
DROP DATABASE IF EXISTS gestionoficinas;
CREATE DATABASE gestionoficinas
CHARACTER SET utf8
COLLATE utf8_spanish_ci;
CREATE TABLE gestionoficinas.articulo (
art CHAR(2) NOT NULL PRIMARY KEY,
desc VARCHAR(50) NOT NULL,
precio VARCHAR(5) NOT NULL,
comision VARCHAR(2) DEFAULT NULL
) ENGINE=INNODB;
INSERT INTO articulos (art,desc,precio,comision) VALUES ('01','Teclado Solar Logitech','79','2');
INSERT INTO articulos (art,desc,precio,comision) VALUES ('02','Raton Wireless','20','2');
INSERT INTO articulos (art,desc,precio,comision) VALUES ('03','Pantalla LED 26','350','5');
INSERT INTO articulos (art,desc,precio,comision) VALUES ('04','Brick de Vino','1','18');
10. Obtener los datos de empleados, artículos y ventas que están implicados en alguna venta realizada durante el año.
SELECT * FROM empleado,articulo,venta
WHERE f_venta IS NOT NULL