0% encontró este documento útil (0 votos)
8 vistas

SQL37861

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
8 vistas

SQL37861

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

Bases de datos relacionales

Tienen tablas que se relacionan mediante claves. Existen las claves primarias y las
foráneas. Están basadas en SQL (Standard Query Language).

● Se debe evitar que el software modifique los datos, solo el usuario puede hacerlo
con peticiones.
● Evitar redundancia de datos

SQL
Modelo relacional

Redundancia
Cuando algún atributo se repite varias veces en una tabla, es mejor crear una tabla para
dicho atributo y conectarla con la entidad con una clave foránea. En el peor de los casos se
tendrán “n” registros donde ningún dato se repita, que ocuparía el mismo espacio que si no
se hubiera hecho la tabla, pero en el mejor (cuando se repiten) puede reducir
significativamente el peso de la base de datos.

Tablas
Ente donde se guarda información, puede ser una entidad. Cada columna es un dato y cada
fila un registro.

Clave primaria
Dato que tiene un valor único para cada registro, este dato no puede ser nulo ni puede tener
el mismo valor para dos registros diferentes.

Clave foránea
Dato que establece una relación entre tablas, indica la clave primaria del registro con el que
se quiere enlazar.
Lenguaje SQL
Crear base de datos:
Para crear una base de datos se utiliza el comando
CREATE DATABASE IF NOT EXISTS nombre_de_la_base_de_datos;

El comando “IF NOT EXISTS” hace que solo se cree si no existe ninguna base de datos con
el mismo nombre en esa misma ruta.

Un comando más específico es


CREATE DATABASE nombre_de_la_base_de_datos DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_general_ci;

Donde CHARACTER se refiere al encoding que se usará, el utf8mb4 sirve para captar letras
de la mayoría de idiomas y además emojis. utf8 no capta emojis, pero si letras de la
mayoría de los idiomas.

COLLATE se refiere a las reglas de comparación de carácteres, esto afecta en si se


diferencian entre mayúsculas y minúsculas (case sensitive y case insensitive) y la forma en
la que se ordena alfabéticamente.

utf8mb4_bin y utf8_bin es case sensitive, mientras que utf8mb4_general_ci y


utf8_general_ci son case insensitive.

Crear tabla
Para crear una tabla se usa el comando
CREATE TABLE nombre_tabla IF NOT EXISTS(
nombre_columna1 tipo_dato1 [parametros]
nombre_columna2 tipo_dato1 [parametros]
.
.
.
PRIMARY KEY (nombre_columna1)
FOREIGN KEY (nombre_columna2) REFERENCES otra_tabla(columna_conex)
INDEX (nombre_columna3)
) ENGINE = ENGINE_NAME;

INDEX: Sirve para mejorar el sistema de búsquedas, se debe definir como INDEX las
columnas que de antemano se sabe que serán usadas en las consultas para buscar
registros.

Engines
InnoDB: Soporta transacciones, bloqueo a nivel de fila, y es el motor predeterminado
recomendado.

MyISAM: Rápido en lecturas, pero no soporta transacciones ni claves foráneas.

MEMORY: Almacena datos en RAM para acceso rápido, pero es volátil.


CSV: Almacena datos en formato CSV, fácil de importar/exportar.

ARCHIVE: Ideal para almacenamiento de datos históricos y compresión.

FEDERATED: Acceso a tablas en otras bases de datos MySQL.

NDB: Para aplicaciones de alta disponibilidad y escalabilidad.

Tipos de datos
INT: Almacena números enteros

FLOAT: Almacena decimales (4 bytes)

DOUBLE: Almacena decimales (8 bytes)

CHAR(n): Almacena strings siempre con n caracteres. (Si el string tiene menos los incluye)

VARCHAR(n): Almacena strings de máximo “n” caracteres. (No añade más caracteres)

BLOB: Almacena datos binarios, como imágenes o audios.

DATE: Almacena fechas en formato 'YYYY-MM-DD'.

DATETIME: Almacena fechas y horas en formato 'YYYY-MM-DD HH:MM

BOOLEAN: Almacena valores booleanos con 0 y 1.

Parámetros de fila
NOT NULL: impide que el valor quede vacío

DEFAULT valor: valor por defecto, en el caso de que no se especifique ninguno

UNIQUE: hace que no puedan existir valores repetidos en los registros

CHECK (condición): hace que los valores tengan que cumplir una condición

AUTO_INCREMENT: genera automáticamente un valor único incrementado

COLLATE: define un collate para esa columna

CHARACTER SET: define un character para esa columna

Algebra relacional
Selección ( ): operador para filtrar registros en base a una condición.
● Notación en álgebra relacional: .
● Notación en SQL: SELECT columnas FROM tabla WHERE condicion

Proyección ( ): operador para seleccionar columnas de una tabla y tomar todos los
registros.
● Notación en álgebra relacional:
● Notación en SQL: SELECT columna1, columna2, ... FROM tabla
Unión ( ): operador para sumar registros sin duplicados
● Notación de álgebra relacional:
● Notación en SQL: SELECT columnas FROM tabla1 UNION SELECT columnas
FROM tabla2

Intersección ( ): operador para seleccionar los registros comunes entre dos tablas.
● Notación en álgebra relacional:

● Notación en SQL: SELECT columnas FROM tabla1 INTERSECT SELECT columnas


FROM tabla2
○ MySQL no soporta INTERSECT, pero se puede reemplazar con INNER JOIN
o IN dependiendo del caso.

○ INNER JOIN sirve para crear una tabla temporal que solo contenga los
registros donde ambas tablas coinciden. Su forma SQL es: SELECT
t1.columnas FROM tabla1 t1 INNER JOIN tabla2 t2 ON (condicion
de relacion entre t1 y t2)

○ IN sirve para filtrar los registros de una tabla, sin tener que crear otra
temporal. Su forma SQL es: SELECT columnas FROM tabla1 WHERE
columna_t1 IN (SELECT columna_t2 FROM tabla2)

Diferencia ( - ): operador para seleccionar registros que están en una tabla pero no en otra.

● Notación en álgebra relacional:

● Notación en SQL: SELECT columnas FROM tabla1 EXCEPT SELECT columnas


FROM tabla2

○ MySQL no soporta EXCEPT, pero se puede reemplazar con LEFT JOIN y


una condición de filtrado.

○ LEFT JOIN permite combinar dos tablas y mostrar todos los registros de la
primera tabla, incluyendo aquellos que no tienen coincidencias en la segunda
tabla. Su forma SQL es: SELECT t1.columnas FROM tabla1 t1 LEFT
JOIN tabla2 t2 ON (condicion de relacion entre t1 y t2) WHERE
t2.columna_t2 IS NULL

Producto cartesiano ( ): operador para crear todas las tuplas posibles entre los registros
de la tabla 1 y la tabla 2.
● Notación en álgebra relacional:

● Notación en SQL: SELECT columnas FROM tabla1 CROSS JOIN tabla2

Unión natural ( ): operador para combinar registros de dos tablas basado en un atributo
común.
● Notación en álgebra relacional:

● Notación en SQL: SELECT columnas FROM tabla1 NATURAL JOIN tabla2


○ Es necesario que las columnas para juntar las tablas tengan el mismo
nombre, el mismo tipo de dato y la misma longitud en el tipo de dato.

Normalización
Clave primaria: Es un atributo o conjunto de atributos que identifica de manera única cada
fila en una tabla. No puede contener valores nulos y debe ser única para cada registro.

Clave candidata: Son los atributos o conjuntos de atributos que pueden ser clave primaria
porque también identifican de forma única a cada registro, pero solo uno de ellos se
selecciona como la clave primaria. Las demás se conocen como claves candidatas.

Dependencias funcionales: Función con los atributos de una tabla, donde se dice que
existe una dependencia funcional si implica necesariamente que
.

Primera forma normal (1NF): Todos los atributos de las tablas son atómicos. Esto quiere
decir que un atributo no puede tener valores con comas o comportarse como si fuera un
array.

Segunda forma normal (2NF): Se debe cumplir 1NF y que todos los atributos que no sean
clave primaria deben depender funcionalmente de la clave primaria.

Tercera forma normal (3NF): Se debe cumplir 2NF y que ningún atributo no-primario
depende transitivamente de una clave primaria. Es decir, todos los atributos deben
depender directamente de la clave primaria.
● La Forma Normal de Boyce-Codd (NFBC): Se debe cumplir la 3NF y que
para cada dependencia funcional no trivial, el determinante es una
superclave. Es decir para toda dependencia funcional
tiene que ser una superclave.

Cuarta forma normal (4NF): Se debe cumplir 3NF o NFBC (cualquiera de las dos)
y ningún atributo está relacionado con múltiples valores de algún otro.

Bases de datos post-relacionales

También podría gustarte