Fundamentos de base de datos
Yhoan Galeano
Web Developer
Algo de mi vida
Soy egresado del SENA, en la tecnología de ADSI del año 2011.
He trabajado en múltiples emprendimientos y he fallado muchas veces, pero agradezco hacerlo porque eso me ha enseñado muchísimo.
En este momento me encuentro emprendiendo (les confieso que he intentado mucho) con algunos amigos y visionamos que para el año 2018 estemos generando empleos formales a muchas personas
Consejo:
"No te preocupes por la vida, nadie sale vivo de ella."
Mariano Ponceliz
Ahora conozcamonos un poco
Actividad de socialización
- Dibujar su escudo y darle un nombre
- Dividirlo en 3 secciones (Personal, Profesional, Cultural) e identificarlas con símbolos
- Un animal que los identifique
- Contarle al compañero a su derecha el significado de su escudo, símbolos y porque se identifica con ese animal.
- El compañero lo presenta ante el grupo con su escudo y animal.
Ejemplo
SQL
Bases de datos
Conjunto finito y estructurado de datos
Conjunto de información organizada que cumple con un objetivo común.
Bases de datos
Sin embargo, hablando desde el punto de vista tecnológico, estas bases de datos deben estar almacenas de manera persistente en un medio electrónico
Tipos
- Relacionales
- No relacionales
- Orientada a objetos
- Multidimensionales
- Objeto Relacional
Sistema Gestor de Bases de datos
(SGBD)
Software que permite manipular bases de datos.
Algunos SGBD ya obsoletos
- Redundancia de información
- Inconsistencia de datos
- Inseguridad
- Difícil acceso y mantenimiento
Algunos SGBD modernos y características
- Reutilización de datos
- Control de redundancia
- Estandarización
- Simplicidad
- Integridad (Correctos y completos)
- Seguridad y Privacidad
- Mantenimiento
- Persistencia
- Atomicidad (Fallos)
- Capacidad de Acceso
- Versatilidad en la representación de información
¿Que debo tener en cuenta para seleccionar alguno de estos SGBD?
¿Como seleccionar el SGBD?
Factores No Técnicos
- Costo del Software (Licencias)
- Costo del Hardware
- Costo del Mantenimiento
- Costos del personal (DBA)
Factores Técnicos
- Fiabilidad
- Recuperación - Fallos
- Seguridad
- Capacidad
- Herramientas
¿Como esta compuesta una base de datos?
Objetos en una base de datos
- Tablas
- Vistas
- Procedimientos Almacenados
- Funciones
- Triggers
- Usuarios
- Roles
Tablas
Las bases de datos contienen cientos o miles de tablas y cada tabla se compone de filas y columnas.
Juan | Perez | M | 21 |
Maria | Castañeda | F | 25 |
Diana | Lopez | M | 14 |
Nombre | Apellido | Genero | Edad |
---|
Juan | Perez | M | 21 |
Maria | Castañeda | F | 25 |
Diana | Lopez | M | 14 |
Nombre | Apellido | Género | Edad |
---|
Fila o registro |
---|
Columna
Nombre columna
Dato
Celda
Cada columna puede tener un tipo de dato diferente de las demás.
SQL
Structured Query Language
Lenguaje de interacción con bases de datos que permite...
- Añadir
- Borrar
- Recuperar
- Editar
- Organizar
- Proteger
...información en una base de datos.
SQL no pertenece a un único SGBD, cada uno de ellos realiza una extensión del mismo.
T-SQL
También conocido como Transact Sql, es una extensión de Sql aplicado al SGBD de MIcrosoft.
PL/SQL
Es una extensión de Sql aplicado al SGBD de Oracle.
PLPG-SQL
Es una extensión de SQL aplicado al SGBD de PostgreSQL.
¿Cuales son las fases para diseñar una base de datos?
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
Diseño Lógico
Modelo Relacional - MR
Diseño Físico
DDL, DML, DCL, TCL
Para comenzar, vamos a identificar la importancia de estas fases del diseño para ser DBAS
Paso 1
Crear el diseño conceptual
Paso 2
Traducimos el diseño conceptual (MER) en un diseño lógico (MR)
Traducción del MER al MR
Entidades, Atributos Simples
Relaciones y Atributos
Traducción del MER al MR
Entidades, Atributos Opcionales
Relaciones y Atributos
Traducción del MER al MR
Entidades, Atributos Compuestos
Relaciones y Atributos
Traducción del MER al MR
Entidades, Atributos Multivaluados
Relaciones y Atributos
Traducción del MER al MR
Entidades, Atributos Multivaluados, Claves Primarias y Claves Foráneas
Relaciones y Atributos
Cardinalidad
Cardinalidad
Cardinalidad
Pero...
Para que este proceso sea exitoso, debemos tener en cuenta unos conceptos muy importantes.
Normalización
La normalización de bases de datos es un proceso que consiste en designar y aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo entidad-relación al modelo relacional. Las bases de datos relacionales se normalizan para: Evitar la redundancia de los datos.
Ventajas de la normalización
- Las actualizaciones se consiguen realizar con un número mínimo de operaciones (mejorando la eficiencia de la base de datos y reduciendo la posibilidad de que aparezcan inconsistencias)
- Se reduce al mínimo el espacio de almacenamiento necesario para la base de datos (reduciendo los costes de operaciones en base de datos)
- Las relaciones realizadas con las correctas formas normales permiten que la integridad de los datos no se vea afectada.
Actividad por grupos
- Normalización y características, términos, clave primaria, clave foránea o secundaria
- Reglas de CODD 0-6
- Reglas de CODD 7-12
- Formas normales 1-3
- Formas normales FNBC - 4
Hagamos un ejercicio
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.
Ahora si...
... Podemos pasar a nuestro diseño físico mas tranquilos
Paso 3
Crear nuestro diseño físico
Tipos de sentencias SQL
Data Definition Language
Definen la estructura de la base de datos.
Data Control Language
Definen el acceso y permisos de la base de datos.
Data Manipulation Language
Definen los datos contenidos en la base de datos.
DDL
DCL
DML
Transaction Control Language
Controlan las transacciones hechas a la base de datos
TCL
DDL
Crear, modificar o eliminar objetos.
- CREATE
- ALTER
- DROP
DCL
Controla y administra quien accede a los objetos de la base de datos.
- GRANT
- REVOKE
DML
Obtener, agregar, modificar o eliminar información contenida en los objetos de la base de datos.
- SELECT
- INSERT
- UPDATE
- DELETE
Estas sentencias pueden ser filtradas por la clausula WHERE
TCL
Administra las transacciones hechas a objetos en la base de datos.
- BEGIN TRANSACTION
- COMMIT TRANSACTION
- ROLLBACK TRANSACTION
DDL
CREATE DATABASE nombre_base de datos
CREATE DATABASE TiendaDiscoStu;
Crea nuevos objetos en la base de datos.
CREATE
CREATE
DDL
CREATE TABLE nombre_tabla
(
nombre_columna1 tipo_de_dato(tamaño),
nombre_columna2 tipo_de_dato(tamaño),
nombre_columna2 tipo_de_dato(tamaño),
....
);
CREATE
DDL
ALTER TABLE nombre_tabla
ALTER|ADD|DROP OBJETO nombre_columna tipo_de_dato (tamaño)
Altera la estructura de objetos en la base de datos.
CREATE
ALTER
ALTER
DDL
DROP TABLE nombre_tabla
Elimina objetos en la base de datos.
CREATE
ALTER
DROP
DROP
CREATE
ALTER
DROP
DDL
GRANT PRIVILIGIES (Ejm: INSERT | UPDATE | DELETE | SELECT ) ON nombre_objeto
TO nombre_usuario
Permite a usuarios leer/escribir sobre los objetos de la base de datos.
GRANT
DCL
GRANT
CREATE
ALTER
DROP
DDL
REVOKE PRIVILIGIES ON nombre_objeto TO nombre_usuario
Niega a usuarios leer/escribir sobre los objetos de la base de datos.
GRANT
REVOKE
DCL
REVOKE
CREATE
ALTER
DROP
DDL
SELECT nombre_columna1, nombre_columna2, nombre_columna3 FROM nombre_tabla
SELECT nombres, apellidos, genero FROM artistas;
Obtiene la información de un objeto en la base de datos.
GRANT
REVOKE
DCL
SELECT
DML
SELECT
Usando "*" para traer todas las columnas
SELECT * FROM artistas;
CREATE
ALTER
DROP
DDL
SELECT nombre_columna1, nombre_columna2, nombre_columna3 FROM nombre_tabla WHERE nombre_columna2 [Operador de Comparación] valor2
SELECT nombres, apellidos, genero
FROM artistas
WHERE genero = 'Rock';
GRANT
REVOKE
DCL
SELECT
DML
Usando WHERE
CREATE
ALTER
DROP
DDL
INSERT INTO nombre_tabla
VALUES (valor1,valor2, valor3,...)
INSERT INTO artistas
VALUES(1018456789,'Chayan Emilio','Lopez',
'El chayan',3000,'Romantico');
Inserta información en un objeto en la base de datos.
GRANT
REVOKE
DCL
SELECT
INSERT
DML
INSERT
CREATE
ALTER
DROP
DDL
UPDATE nombre_tabla SET nombre_columna1 [Operador de Asignación] valor1
UPDATE artistas SET sueldo = 200;
Actualiza la información de un objeto en la base de datos.
GRANT
REVOKE
DCL
SELECT
INSERT
UPDATE
DML
UPDATE
CREATE
ALTER
DROP
DDL
UPDATE nombre_tabla SET nombre_columna1 [Operador de Asignación] valor1 WHERE nombre_columna2 [Operador de Comparación] valor2
UPDATE artistas SET sueldo = 200
WHERE genero = 'Reggaeton';
GRANT
REVOKE
DCL
DML
Usando WHERE
SELECT
INSERT
UPDATE
CREATE
ALTER
DROP
DDL
DELETE FROM nombre_tabla
DELETE FROM artistas;
Borra información de un objeto en la base de datos.
GRANT
REVOKE
DCL
SELECT
INSERT
UPDATE
DELETE
DML
DELETE
CREATE
ALTER
DROP
DDL
DELETE FROM nombre_tabla WHERE nombre_columna2 [Operador Comparativo] valor2
DELETE FROM artistas
WHERE nombre_artistico = 'Trigresa del oriente';
GRANT
REVOKE
DCL
DML
Usando WHERE
SELECT
INSERT
UPDATE
DELETE
Tipos de datos
Numericos exactos
Fecha y hora
Cadenas de caracteres
Entre otros.
Operadores (PLPG-SQL)
- Aritméticos
- Lógicos
- De asignación
- De comparación
Entre otros.
Aritméticos
Operador | Significado |
---|---|
+ | Suma |
- | Resta |
* | Multiplicación |
/ | División |
% | Módulo o resíduo |
Lógicos
Operador | Significado |
---|---|
AND | TRUE si ambas expresiones booleanas son TRUE. |
BETWEEN | TRUE si el operando está dentro de un intervalo. |
IN | TRUE si el operando es igual a uno de la lista de expresiones. |
LIKE | TRUE si el operando coincide con un patrón. |
NOT | Invierte el valor de cualquier otro operador booleano. |
OR | TRUE si cualquiera de las dos expresiones booleanas es TRUE. |
Los más usados
De asignación
El signo igual (=) es el único operador de asignación de Transact-SQL.
=
De comparación
Operador | Significado |
---|---|
= | Igual a |
> | Mayor que |
< | Menor que |
>= | Mayor o igual que |
<= | Menor o igual que |
<> O != | No es igual a, Diferente de |
Funciones integradas (PLPG-SQL)
- De agregado
- De conversión
- De Fecha y hora
- Matemáticas
- De cadena
Funciones integradas que proporcionan ayuda para trabajar con la información de la base de datos.
(Las más usadas)
De agregado
Función | Descripción | Uso |
---|---|---|
AVG(nombre_columna) | Devuelve el promedio de los valores de un grupo. Se omiten los valores NULL. | SELECT AVG(monto) FROM Ventas |
MIN(nombre_columna) | Devuelve el valor mínimo de la expresión | SELECT MIN(TasaImpuesto) Ventas; |
COUNT(nombre_columna) | Devuelve el número de elementos de un grupo | SELECT COUNT(DISTINCT Nombre) FROM Empleados; |
MAX(nombre_columna) | Devuelve el valor máximo de la expresión | SELECT MAX(TasaImpuesto) FROM Ventas; |
SUM(nombre_columna) | Devuelve la suma de todos los valores o solo de los valores DISTINCT de la expresión | SELECT SUM(Total) FROM Ventas; |
(Las más usadas)
De conversión
Función | Descripción | Uso |
---|---|---|
CAST(expresión AS tipo_dato) | Convierte una expresión de un tipo de datos en otro | SELECT CAST(236 AS nvarchar); |
(Las más usadas)
De fecha y hora
Función | Descripción | Uso |
---|---|---|
NOW() | Devuelve un valor datetime que contiene la fecha y hora del equipo en el que la instancia de SQL Server se está ejecutando. El ajuste de zona horaria no está incluido. | SELECT NOW(); |
DATE_PART(Parte, Expresión) | Devuelve la parte especificada de una expresión (fecha). | SELECT date_part('year',TIMESTAMP '2017-01-01'); |
(Las más usadas)
Matemáticas
Función | Descripción | Uso |
---|---|---|
SQRT(dato) | Devuelve la raíz cuadrada del valor de tipo flotante especificado | SELECT SQRT(9); |
CEILING(dato) | Devuelve un valor numérico, redondeado a la longitud o precisión especificadas | SELECT CEILING(12.34) |
POWER(dato,potencia) | Devuelve el valor de la expresión especificada elevado a la potencia especificada. | SELECT POWER(2,3); |
(Las más usadas)
De cadena
Función | Descripción | Uso |
---|---|---|
CONCAT(cadena1,cadena2,...) | Devuelve una cadena que es el resultado de concatenar dos o más valores de cadena | SELECT CONCAT('Hola','que','tal'); |
SUBSTRING(cadena,indice_inicio,numero_indices_desplazamiento) | Devuelve parte de una expresión de caracteres, binaria, de texto o de imagen en SQL Server. | SELECT SUBSTRING('abcdef', 2, 3); |
REPLACE(dato,valor_a_reemplazar,valor_reemplazo) | Reemplaza todas las instancias de un valor de cadena especificado por otro valor de cadena. | SELECT REPLACE('primer texto','primer','reemplazado'); |
LENGTH(cadena) | Devuelve el número de caracteres de la expresión de cadena especificada, excluidos los espacios en blanco finales | SELECT LENGTH('Texto de prueba'); |
(Las más usadas)
De cadena
Función | Descripción | Uso |
---|---|---|
UPPER(cadena) | Devuelve una expresión de caracteres convertidos a mayúsculas | SELECT UPPER('Pedro'); |
LOWER(cadena) | Devuelve una expresión de caracteres convertidos a minúsculas | SELECT LOWER('Juan'); |
RTRIM(cadena) | Remueve los espacios en blanco al final de una cadena | SELECT RTRIM('Buenos días '); |
LTRIM(cadena) | Remueve los espacios en blanco al principio de una cadena | SELECT LTRIM(' buenas tardes'); |
(Las más usadas)
SELECT nombre_columna1, nombre_columna_2 FROM nombre_tabla LIMIT numero_filas
SELECT * FROM Artistas LIMIT 8;
Clausula LIMIT
SELECT nombre_columna1 AS 'nombre_alias1',nombre_columna2 AS 'nombre_alias2' FROM nombre_tabla
SELECT genero AS 'Genero Artistico'
FROM artistas;
ALIAS
Son palabras que pueden reemplazar el nombre de columnas o tablas en una consulta sin alterar su estructura como tal.
SELECT nombre_columna1 ,nombre_columna2 FROM nombre_tabla WHERE nombre_columna1 IN (consulta_select)
SELECT * FROM artistas
WHERE Pais IN
(SELECT NombrePais FROM Paises
WHERE Continente = 'América');
SUBCONSULTAS
Consultas anidadas en otras consultas.
Se pueden incluir en:
- SELECT
- FROM
- WHERE
SELECT nombre_columna1 ,nombre_columna2 FROM nombre_tabla WHERE nombre_columna1 ORDER BY nombre_columna
SELECT * FROM artistas
WHERE genero = 'Jazz'
ORDER BY FechaEntrada;
ORDER BY
Ordenar datos dentro de una cláusula SELECT, puede tener las siguientes variaciones:
- ASC
- DESC
SELECT funcion_agregado FROM nombre_tabla WHERE nombre_columna1 GROUP BY nombre_columna_agrupar
SELECT count(*) FROM
artistas
GROUP BY genero
GROUP BY
Agrupar datos dentro de una cláusula SELECT que contenga una función de agregado.
nombre_columna PRIMARY KEY,
id INT PRIMARY KEY,
LLaves primarias
Campo o combinación de campos que identifica de forma única a cada fila de una tabla.
Incluida dentro de la sentencia CREATE de una tabla.
ALTER TABLE artistas WITH CHECK ADD
CONSTRAINT FK_GENERO FOREIGN KEY (GENERO_ID)
REFERENCES Generos (ID)
LLaves foráneas
Identifican una columna o grupo de columnas en una tabla que se refiere a una columna o grupo de columnas en otra tabla.
Fundamentos de programación - SQL - Especialización
By Yhoan Andres Galeano Urrea
Fundamentos de programación - SQL - Especialización
Fundamentos de SQL
- 1,945