Apuntes_Python/01_curso/Modulo_4/4-1a_bases_de_datos.md
2022-12-24 22:41:20 -03:00

5.7 KiB

Bases de Datos

Por lo general un programa necesita cargar y guardar datos externos al mismo.

Si los datos son pocos y sin estructura, se pueden utilizar archivos.

Si se necesita manejar grandes volumenes de datos, y además estos datos
están relacionados, usar archivos es inviable, poco eficiente, y requieren
código mas complejo.

El tipo de base de datos mas utilizado en la actualidad son las bases
de datos relacionales
(Edgar Frank Codd, IBM, sn Jose, California 1970).

Las bases de datos pueden considerarse como un conjunto de relaciones o tabas
que contienen registros o filas y cada registro contiene campos (dato especifico).


Esquemas y Datos

  • Esquema:
    Definición de la estructura de la base de datos, almacena principalmente;
    nombre de cada tabla, nombre de cada columna, y tipo de dato de cada columna.

  • Datos:
    Son el contenido de la base de datos en un momento dado

Las bases de datos relacionales utilizan lenguaje SQL (Structured Query Languaje)
Se utilizará SQLite, por ser muy liviano.

  • SQLite3
  • SQLiteBrowser

Funcionalidad básica SQLiteBrowser

  • Database Structure : Modificar la estructura de la base de datos

  • Browser Data : Buscar, insertar o eliminar datos en una tabla

  • Edit Pragmas : Perminte modificar parametros de la DB (opcs. avanzadas)

  • Execute SQL : Ejecutar consultas SQL

El programa permite Importar y Exportar tablas, file import/export


El modelo Relacional

Está basado en la lógica de predicados y la teoría de conjuntos.

Primary Key :
Asegura que cada registro de una tabla sea único.
No se permite tener dos registros con la misma clave primaria en una misma tabla.

La llave primaria puede ser un campo o una combinación de estos, que identifiica
cada fila de una tabla de forma única.
No pueden existir dos filas que tengan la misma clave primaria.

Son valores únicos, no nulos.

   Ej. de posibles claves primarias:
   - DNI    - ISBM  - Patente
   - Nro. de tarjeta 

Foreign Key :
La clave foránea identifica una columna o grupo de columnas en una tabla (tabla
hija o referendo) que se refiere a una columna o grupo de columnas en otra tabla
(tabla maestra o referenciada, puediendo ser la misma tabla).

Una clave foránea es una limitación referencial entre dos tablas.
Clave utilizada para vincular o relacionar dos tablas

Una tabla puede contener múltiples claves foráneas referenciando tablas diferentes.

La base de datos hace cumplir las restricciones de referencia.

Se debe garantizar la integridad de los datos, sus respectivas tablas,
y filas referenciadas al actualizar o eliminar.


Integridad de Datos

El sistema de gestión de base de datos relacionales, preserva la integridad
de los datos almacenados (a medida de lo posible).

Restricciones de integridad

Integridad de dominio:
Validación de las restricciones requeridas para una determinada columna de la tabla
ej.

  • Datos Requeridos: valor de columna Not Null
  • Validacion: Asegura que los tipos de datos insertados correspondan al especificado

Integridad de entidad:
Comprobación de unicidad del valor de la clave primaria, al insertar/modificar un registro

Integridad referencial
Asegura la integridad entre las llaves foránea y primaria. (tabla refereciada/tabla referendo)

Actualizaciones de BDs que pueden corromper la integridad referencial

  • Incongruencia entre clave foránea con clave primaria al insertar una fila en la tabla referendo.

  • Incongruencia entre clave foránea con clave primaria al actualizar la clave foránea,
    a un valor inexsitente de clave primaria en la tabla refenciada.

  • Borrando una fila referenciada. Las filas de la tabla referendo quedan huérfanas.

  • Actualización de clave primaria en la tabla referenciada, cuando existe(n) referencia(s)
    a la fila modificada. Las filas de la tabla referendo quedan huérfanas.

Especificación SQL año 2003

Asegurando la integridad referencial

En caso de actualizar o eliminar registros de una tabla rederenciada (padre),
se definen 5 acciónes referenciales diferentes:

  • CASCADE
    Cuando se elminen/actualizen las filas de una tabla padre, se eliminan/actualizan
    las respectivas filas de la tabla hija. eliminacion o actualización en cascada.

  • RESTRICT
    Impide la modificación del valor de una columna de la tabla padre,
    cuando está refereciada al valor de una fila en una tabla hija.

  • NO ACTION
    Similar a RESTRICT. Pero la comprobación de integridad se realiza
    despues de intentar modificar la tabla (UPDATE o DELETE)

  • SET DEFAULT
    Cambia a un valor predefinido, el valor de referencia afectado

  • SET NULL
    Cambia a NULL el valor de referencia afectado.
    No debe estar definido NOT NULL en la columna hija.


Indices

Estructura de datos que mejora la velocidad de las operaciones, permitiendo un
rápido acceso a los registros de una tabla, de una BD.

Pueden ser definidos como únicos, actuando como restricción,
previniendo filas idénticas en el índice.
Pueden ser creados a partir de una o más columnas.
El indice ocupa espacio en disco, por lo que puediera ralentizar un INSERT,
UPDATE o DELETE.

Detalle de implementación: Los índices son construidos generalmente sobre árboles B, B+ o B*