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

  1. Normalización y características, términos, clave primaria, clave foránea o secundaria 
  2. Reglas de CODD 0-6
  3. Reglas de CODD 7-12
  4. Formas normales 1-3
  5. 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