jueves, 4 de enero de 2024

Tipos de Datos de Oracle 21c

Oracle 21c

La innovadora y poderosa Oracle Database 21c ha llegado para definir nuevos estándares en la gestión de bases de datos, consolidándose como la versión más reciente de la plataforma líder a nivel mundial. Diseñada para abrazar la mentalidad "cloud first", esta versión ya se encuentra disponible en Oracle Cloud, ofreciendo su excelencia tanto en entornos de máquinas virtuales como en servicios Bare Metal. La accesibilidad se amplía aún más con su presencia en el servicio gratuito Autónoma Database Free Tier, abriendo las puertas de la tecnología de Oracle a las regiones de Ashburn, Phoenix, Frankfurt y Londres.

Con una propuesta centrada en la innovación, Oracle Database 21c ha marcado su presencia en la nube, proporcionando soluciones avanzadas para entornos tanto de RAC como de instancia única. Mientras continúa su expansión en servicios en la nube, la versión local para plataformas como Exadata, Linux y Windows está programada para su lanzamiento en el transcurso de 2021, llevando la vanguardia de Oracle a una variedad aún mayor de usuarios y aplicaciones. Este hito refleja el compromiso de Oracle con la evolución constante y la excelencia en la gestión de datos, consolidando su posición como líder indiscutible en el ámbito de las bases de datos.



Tipos de Datos de Oracle 21c

Numéricos


Como tipos de datos numéricos, tenemos:
  • NUMBER (p, s): Un tipo de dato utilizado para almacenar valores numéricos. El Tipo de dato tiene un número de precisión p y una escala s. La precisión p puede variar de 1 a 38. La escala de s puede variar desde -84 hasta 127. 
    • Precisión es el número total de dígitos permitidos.
    • Escala es el número de dígitos permitidos a la derecha del punto decimal
Por ejemplo:

NUMBER (8,1), puede almacenar un valor máximo de 9.999.999,9

NUMBER (8,6), puede almacenar un valor máximo para 99.999999

Si no se especifica precisión, la escala predeterminada es el rango máximo. Si se especifica una precisión, la escala por defecto es 0 (sin dígitos a la derecha del punto decimal).

Por ejemplo:

NUMBER,  si no se pone el tamaño toma cualquier número de coma flotante (con decimales)

NUMBER (38), puede almacenar sólo los datos enteros (sin decimales), ya que los valores predeterminados de escala a 0

 

  • BINARY_FLOAT: El número de coma flotante de precisión simple IEEE nativa. Se almacena en 5 bytes: 4 bytes fijos para el número de punto flotante y 1 byte de longitud. Puede almacenar números en el rango de ~ ± 1038.53 con 6 dígitos de precisión.
  • BINARY_DOUBLE: El número de coma flotante de doble precisión IEEE nativa. Se almacena en 9 bytes: 8 bytes fijos para el número de coma flotante y 1 byte de longitud. Puede almacenar números en el rango de ± 10308.25 con 13 dígitos de precisión.
A modo de resumen, podemos decir que el tipo de datos número tiene una precisión significativamente mayor que la BINARY_FLOAT y los tipos de datos BINARY_DOUBLE, sino una gama mucho más pequeña (para almacenar los números).


Cadenas de caracteres


Como tipo de datos de caracteres tenemos:
  • CHAR (tamaño): Una cadena de caracteres de longitud fija con un tamaño máximo de 2000 bytes. Si inserta un valor inferior a la longitud especificada, Oracle rellenará el espacio en blanco. Si inserta un valor que es demasiado largo, Oracle devolverá un error. El tamaño es el número de caracteres a almacenar.
  • NCHAR (tamaño): Similar a CHAR (tamaño) que contiene datos Unicode formateados. Puede ser utilizado para almacenar datos de diferentes conjuntos de caracteres.
  • VARCHAR2 (tamaño): Una cadena de caracteres de longitud variable con un tamaño máximo de 4000 bytes. No utiliza espacio de almacenamiento para espacios en blanco al final de la cadena.
  • NVARCHAR2 (tamaño): Similar a VARCHAR2 (tamaño) que contiene datos Unicode formateados.
  • LONG: Un tipo de datos para almacenar datos de caracteres de longitud variable de hasta 2 Gb de longitud (versión más grande que VARCHAR2).
  • RAW: Un tipo binario de longitud variable para almacenar datos de caracteres. No habrá conversión de conjunto de caracteres en los datos almacenados, por lo que se considera una cadena de bytes binarios de información. Almacena hasta 2.000 bytes.
  • LONG RAW: Este tipo de datos es similar al tipo de datos LONG, así que es recomendable que utilice los tipos de datos CLOB o NCLOB.


Fecha


Como tipo de datos de fecha tenemos:
  • DATE: Estos tipos de datos son utilizadas para almacenar la fecha y valores de tiempo en una estructura de 7-byte de ancho fijo. Puede manejar intervalos de fechas desde el 1 de enero de 4712 AEC hasta el 31 de diciembre de 9999.
El formato de la estructura de 7 bytes es:

1. Siglo
2. Año en el siglo
3. Mes
4. Día del mes
5. Hora
6. Minuto
7. Segundo

  • TIMESTAMP: Está una extensión del tipo de datos DATE que puede almacenar datos de fecha y hora (incluyendo fracciones de segundo). Se pueden conservar hasta 9 dígitos a la derecha del punto decimal. Este tipo de datos toma 11 bytes de almacenamiento.
  • TIMESTAMP WITH TIME ZONE: Está una extensión del tipo de datos TIMESTAMP que puede almacenar, además, la información de zona horaria, por lo que la zona horaria insertada originalmente se conserva con los datos. Este tipo de datos se almacena en una estructura de 13 bytes de ancho fijo.
  • TIMESTATM WITH LOCAL TIME ZONE: Este es un tipo de datos similar al tipo de datos TIMESTAMP, sin embargo esta depende de la zona horaria. Por ejemplo, si inserta un valor de fecha / hora de una aplicación Web utilizando la zona horaria US / Pacific y la zona horaria de la base de datos es US / Eastern, el valor de fecha / hora final se convertirá en EEUU / zona horaria del Este y se almacena como un valor de marca de tiempo. Cuando se solicita de nuevo la información, la marca de tiempo almacenado en la base de datos se convierte de nuevo a la zona horaria de aplicaciones Web (US / Pacífico).
  • INTERVAL: Este tipo de datos se utiliza para almacenar un período de tiempo / duración de tiempo. Como consecuencia podemos utilizar este tipo de datos para la aritmética de fechas con el fin de añadir o restar un período de tiempo de una fecha o los tipos de datos de fecha y hora. Hay dos tipos de intervalo:
1. INTERVAL YEAR TO MONTH: Para almacenar una diferencia en años y meses. Es un tipo de datos de 5 bytes de ancho fijo.
2. INTERVAL DAY TO SECOND: Para almacenar una diferencia en días, horas, minutos y segundos. Es un tipo de datos de 11 bytes de anchura fija.

Binarios

Como tipo de datos binarios tenemos:
  • BFILE: Para empezar, este tipo de dato que permite almacenar un puntero a un objeto en el sistema de archivos en una columna de base de datos y para leer el archivo directamente desde el sistema de archivos. Esto le permite acceder a los archivos disponibles en el sistema de archivos del servidor de base de datos como si estuvieran almacenados en la propia tabla de la base de datos.
  • BLOB: Como consecuencia este tipo de datos que puede contener hasta 4 GB de datos. BLOB son útiles para almacenar documentos binarios (por ejemplo, hoja de cálculo, un documento de procesamiento de textos, imágenes, audio, video). A diferencia de BFILE tipo de datos que almacena la información digitalizada en el sistema de archivos, tipo de datos BLOB almacena la información digitalizada directamente en la base de datos.
  • CLOB: Por otra parte, un tipo de datos que puede contener hasta 4 GB de información. por lo tanto, este tipo de datos contiene información que está sujeta a conversión de conjunto de caracteres. Además, es apropiado para almacenar información de texto plano grande. En resumen, no es apropiado para almacenar los datos de texto sin formato son de 4.000 bytes o menos, en este caso se recomienda utilizar el tipo de datos VARCHAR2.
  • NCLOB: Funciona de la misma manera, que que el tipo de dato CLOB, pero los caracteres son almacenados en una NLS o en un conjunto de caracteres Unicode de varios bytes.

Otros

  • BOOLEAN: Oracle 9i y versiones posteriores introdujeron el tipo de dato BOOLEAN. Sin embargo, es importante destacar que, a diferencia de algunos otros sistemas de gestión de bases de datos (como PostgreSQL o MySQL), Oracle utiliza principalmente el tipo de datos NUMBER (1) para representar valores booleanos. Aun así, la introducción de BOOLEAN como tipo de datos proporciona una mayor claridad semántica al declarar variables y columnas que deberían almacenar valores lógicos.
Ejemplo de declaración de variable BOOLEAN:

DECLARE
my_boolean_variable BOOLEAN;
BEGIN
my_boolean_variable := TRUE;
DBMS_OUTPUT.PUT_LINE('Valor booleano: ' || my_boolean_variable);
END;

  • ROWID: Es un identificador único para una fila en una tabla de una base de datos Oracle. Contiene información sobre el objeto, el archivo, el bloque y la entrada de la fila. Puede ser utilizado para acceder directamente a una fila específica, pero su uso puede ser limitado en situaciones de particionamiento o ciertas operaciones.
Ejemplo de uso de ROWID:

SELECT ROWID, column1, column2
FROM my_table
WHERE column1 = 'some_value';

  • UROWID (Universal ROWID): Es una versión extendida de ROWID que se introdujo para abordar limitaciones potenciales del uso de ROWID. UROWID es más versátil y se puede utilizar en cualquier tabla en el sistema, independientemente de la forma en que esté particionada o indexada.
Ejemplo de uso de UROWID:

SELECT UROWID, column1, column2
FROM my_table
WHERE column1 = 'some_value';

  • TABLE: El tipo de datos TABLE se utiliza para definir colecciones anidadas, que pueden ser tablas anidadas o matrices.
Ejemplo de uso de TABLE:

CREATE TYPE employee_type AS OBJECT (
emp_id NUMBER,
emp_name VARCHAR2(50);
CREATE TYPE employee_table_type AS TABLE OF employee_type;

  • VARRAY: (Variable Array) es un tipo de datos que representa una matriz de tamaño variable.
Ejemplo de uso de VARRAY: 
CREATE TYPE phone_numbers_type AS VARRAY(3) OF VARCHAR2(15);

  • NCHAR / NVARCHAR2: Son versiones de los tipos de datos CHAR y VARCHAR2 que admiten caracteres Unicode.
Ejemplo de uso de NVARCHAR2: 
CREATE TABLE unicode_table (
id NUMBER,
description NVARCHAR2(100)
);

  • SDO_GEOMETRY: Utilizado para almacenar información espacial, como puntos, líneas y polígonos.
Ejemplo de uso de SDO_GEOMETRY: 
CREATE TABLE spatial_data (
id NUMBER,
location SDO_GEOMETRY
);

  • XMLTYPE: Permite almacenar y manipular datos XML.
Ejemplo de uso de XMLTYPE: 
CREATE TABLE xml_data (
id NUMBER,
xml_content XMLTYPE
);

  • SEQUENCE: No es un tipo de dato en sí mismo, pero Oracle utiliza secuencias para generar identificadores únicos de manera automática.
Ejemplo de uso de SEQUENCE: 
CREATE SEQUENCE my_sequence START WITH 1 INCREMENT BY 1;

lunes, 18 de diciembre de 2023

NORMALIZACIÓN

¿Qué es la normalización?

La normalización es el proceso de convertir datos complejos en un conjunto de estructuras de datos más pequeñas que no sólo son más simples y estables, sino también más fáciles de mantener. La normalización también puede entenderse como un conjunto de reglas que ayudan a los diseñadores de bases de datos a diseñar un esquema que minimice los problemas lógicos. La normalización se utiliza porque el estilo antiguo de colocar todos los datos en un solo lugar, como un archivo o una tabla de base de datos, es ineficiente y genera errores lógicos al intentar manipular los datos.


Básicamente, hay tres niveles de normalización: Primera Forma Normal (1NF), Segunda Forma Normal (2NF) y Tercera Forma Normal (3NF). Cada una de estas formas tiene sus propias reglas. Cuando la base de datos alcanza un cierto nivel, se considera normalizada a esta forma normalizada.

Grados de normalización

  • Primera Forma Normal (1FN): Incluye la eliminación de todos los grupos repetidos.
  • Segunda Forma Normal (2FN): Asegura que todas las columnas que no son llave sean completamente dependientes de la llave primaria (PK).
  • Tercera Forma Normal (3FN): Elimina cualquier dependencia transitiva. Una dependencia transitiva es aquella en la cual las columnas que no son llave son dependientes de otras columnas que tampoco son llave.


Primera forma normal (1FN)


La regla de la Primera Forma Normal establece que las columnas repetidas deben eliminarse y colocarse en tablas separadas.

Convertir la base de datos al formato normal primero resuelve el problema de tener múltiples encabezados de columna. Es muy común que los diseñadores de bases de datos sin experiencia hagan algo similar a una tabla desnormalizada. Crearán columnas que representen los mismos datos una y otra vez. La estandarización ayuda a aclarar la base de datos y organizarla en partes más pequeñas y más fáciles de entender. En lugar de entender una mesa monolítica gigante con muchos aspectos diferentes, simplemente necesitamos entender objetos más pequeños y tangibles y sus relaciones con otros objetos pequeños.

Un dato sin normalizar no cumple con ninguna regla de normalización. Para explicar con un ejemplo en que consiste, vamos a considerar los datos de la siguiente tabla.



Aplicando la primera forma:
  • Tenemos que eliminar los grupos repetidos.
  • Tenemos que crear una nueva tabla con la PK de la tabla base y el grupo repetido
  • Los registros quedan ahora conformados en dos tablas que llamaremos ORDENES y ARTICULOS_ORDENES





Segunda forma normal (2FN)


La segunda forma normal (2FN) se encarga de eliminar todas las dependencias parciales.

Características:
  • Se debe cumplir la primera forma normal.
  • Todos los atributos no claves deben depender de la clave primaria completa.
¿Qué necesitamos para estar en 2FN?
A continuación, lo veremos en el siguiente ejemplo.
En esta tabla podemos ver todas las películas disponibles en el cine.

La clave primaria es (Titulo + formato). Las dependencias funcionales correctas, deberían lucir así:
  • Titulo + Formato -> Director
  • Titulo + Formato -> Precio
  • Titulo + Formato -> Duración
  • Titulo + Formato -> Puntuación
  • Titulo + Formato -> Productora
Sin embargo, las dependencias no son esas… Sino estas:
  • Titulo -> Director
  • Titulo + Formato -> Precio
  • Titulo -> Duración
  • Titulo -> Puntuación
  • Titulo -> Productora
Casi todas las columnas dependen funcionalmente de título y solamente el Precio depende de la clave primaria compuesta completa.
Esto es un problema de dependencias parciales, porque los atributos dependen de una parte de la clave y no de la clave primaria completa (Titulo + Formato)
Por consecuente no cumplimos con la segunda forma normal.

Ahora separamos la tabla.
Ahora sí, la tabla de películas tiene una sola clave primaria y todos sus campos dependen ella.
Y la tabla de precios tiene su clave primaria compuesta, y depende completamente.

Tercera forma normal (3FN)


La tercera forma normal (3NF) es un principio fundamental en el diseño de bases de datos relacionales. Se utiliza para organizar la información de manera eficiente, reducir la redundancia de datos y evitar problemas de actualización anómala. Una base de datos está en tercera forma normal si cumple con las reglas de la primera forma normal (1NF) y la segunda forma normal (2NF), además de algunas reglas adicionales.

Las reglas específicas para la tercera forma normal son las siguientes:
  • Cumplir con la 2NF: La base de datos debe cumplir con la segunda forma normal.
  • Eliminar dependencias transitivas: No debe haber dependencias transitivas no triviales. Una dependencia transitiva ocurre cuando un atributo no clave depende de otro atributo no clave en lugar de depender directamente de la clave primaria.
Por lo tanto, el pasar de 2FN a 3Fn implica la eliminación de las dependencias transitivas en las relaciones, al eliminar los atributos que dependen transitivamente estaremos creando una nueva relación, de estos más el atributo determinante.

Vamos a explicar esto con un ejemplo. Supongamos que tenemos una tabla llamada "Empleados" con los siguientes atributos:
  • EmpleadoID (clave primaria)
  • Nombre
  • DepartamentoID
  • NombreDepartamento
En este caso, la dependencia transitiva sería que el atributo "NombreDepartamento" depende de "DepartamentoID" en lugar de depender directamente de la clave primaria "EmpleadoID". Para corregir esto y cumplir con la tercera forma normal, podríamos dividir la tabla en dos:

De esta manera, eliminamos la dependencia transitiva y cumplimos con la tercera forma normal.

En resumen, la tercera forma normal es una etapa adicional en el diseño de bases de datos relacionales que busca garantizar la integridad y eficiencia de los datos, eliminando dependencias transitivas y asegurándose de que la información esté organizada de manera lógica y sin redundancias innecesarias.

Normalización más allá de la 3FN


La mayoría de las tablas 3NF están libres de anomalías de actualización, inserción y borrado. Ciertos tipos de tablas 3NF, que en la práctica raramente se encuentran, son afectadas por tales anomalías; éstas son tablas que no satisfacen la forma normal de Boyce-Codd (BCNF) o, si satisfacen la BCNF, son insuficientes para satisfacer las formas normales más altas 4NF o 5NF.

lunes, 13 de noviembre de 2023

HISTORIA Y CONCEPTOS DE BASES DE DATOS


¿Qué son las bases de datos?

Las bases de datos son sistemas organizados para almacenar, gestionar y recuperar datos de manera estructurada. Utilizan tablas con filas y columnas para organizar la información, donde cada fila representa un registro único y cada columna un atributo específico. Las claves primarias identifican de manera única cada registro, y las relaciones entre tablas permiten vincular información. El SQL es un lenguaje utilizado para gestionar bases de datos relacionales. Los Sistemas de Gestión de Bases de Datos (SGBD) son software que facilita la creación y manipulación de bases de datos. Las bases de datos son esenciales en diversas aplicaciones para almacenar y acceder eficientemente a la información.


¿Qué son los SGBD / DBMS?

SGBD:

Sistema de Gestión de Bases de Datos (SGBD) es un software especializado que facilita la creación, organización y gestión eficiente de grandes cantidades de datos. Proporciona herramientas para definir la estructura de la base de datos, manipular datos, garantizar la integridad y seguridad de la información, gestionar la concurrencia de usuarios, realizar copias de seguridad y optimizar consultas. Los ejemplos de SGBD incluyen MySQL, PostgreSQL y Oracle Database, y son esenciales en aplicaciones empresariales y sistemas de información.


Historia y evolución de los SGBD / DBMS

La historia y evolución de los Sistemas de Gestión de Bases de Datos (SGBD o DBMS, por sus siglas en inglés) ha sido un viaje fascinante desde los primeros días de la informática hasta la complejidad de las bases de datos modernas, pues estos impulsan el crecimiento del uso de las computadoras.

1. (1950-1960):

  • Desarrollo de las cintas magnéticas.
  • Aparece el lenguaje COBOL.
  • Se destacan las bases de datos manuales y sistemas de archivo.
  • La gestión de datos se realizaba de manera descentralizada y sin estándares
2.(Década de los 70´):
  • Aparecen los discos magnéticos, estos permitieron el acceso directo a los datos.
  • Desarrollo de las primeras BD jerárquicos (IMS de IBM)

y de red (IDMS/R de Cullinet)


3. Modelo Relacional (1970):


  • Introducción del modelo relacional propuesto por Edgar Codd.
  • Independencia lógica y Fisica de los datos.
  • IBM lanzó System R y Oracle lanzó su primera versión.
  • SQL (Structured Query Language) se convierte en el estándar para consultas.

4. DBMS Comerciales (1980-1990):
  • Auge de los DBMS comerciales como Oracle, IBM DB2, Ingres, Microsoft SQL Server, etc.
  • El diseño y mantenimiento de las BDs se vuelven más sencillos.
  • Comienzos de estudios de BD distribuidas y paralelas.
  • Comienzo de Bds orientadas a objetos.
  • Desarrollo de sistemas distribuidos y la arquitectura cliente-servidor.
5. Sistemas de Bases de Datos Paralelas (1990-2000):

  • Aumento en la popularidad de las bases de datos paralelas para mejorar el rendimiento.
  • Desarrollo de tecnologías de almacenamiento masivo y procesamiento en paralelo.
6. Bases de Datos Orientadas a Objetos (1990-2000):
  • Introducción de bases de datos orientadas a objetos.
  • Object-oriented Database Management Systems (OODBMS) como ObjectStore y db4o.





7. Internet y Bases de Datos (2000-2010):

  • El auge de la web y las aplicaciones en línea impulsa el desarrollo de bases de datos web.
  • MySQL y PostgreSQL se vuelven populares como soluciones de código abierto.
8. Big Data y NoSQL (2010 en adelante):
  • Aparición de tecnologías NoSQL como MongoDB y Cassandra para manejar grandes volúmenes de datos no estructurados.
  • Enfoque en la escalabilidad y flexibilidad.
9. Nuevas Tendencias (2020 en adelante):
  • Continuo crecimiento de bases de datos en la nube, como Amazon DynamoDB y Google Cloud Firestore.
  • Integración de inteligencia artificial y aprendizaje automático en la gestión de bases de datos.


En resumen, la evolución de los SGBD ha sido marcada por la búsqueda constante de modelos y tecnologías que mejoren la eficiencia, la escalabilidad y la flexibilidad para adaptarse a las crecientes demandas de almacenamiento y gestión de datos en la era digital.

Paradigmas de base de datos

Los paradigmas de base de datos son enfoques o modelos conceptuales que guían la forma en que se diseñan, organizan y gestionan las bases de datos. Aquí hay algunos paradigmas importantes:

Bases de datos Jerárquicas

  • Descripción: Organiza los datos en una estructura de árbol o jerarquía, donde cada registro tiene un único padre y múltiples hijos.
  • Característica: Adecuado para datos con relaciones padre-hijo, pero menos flexible que otros modelos.

Bases de datos en Red

  • Descripción: Utiliza un enfoque de red o grafo para representar datos, donde cada nodo puede estar conectado a varios otros nodos.
  • Característica: Proporciona flexibilidad en las relaciones, pero puede ser más complejo de manejar.

Bases de datos Relacionales 

  • Descripción: Almacena datos en tablas con filas y columnas, estableciendo relaciones entre ellas.
  • Característica: Estructura organizada y eficiente, utiliza operaciones como JOIN para relacionar datos.

¿Qué es el modelamiento de bases de datos?

Un modelo de base de datos representa la estructura lógica de una base de datos, incluyendo relaciones y restricciones para almacenar y acceder a los datos. Se diseña conforme a reglas y conceptos de un modelo más amplio adoptado por el diseñador. Se inicia con un diagrama de flujo de datos para definir formatos, estructuras y funciones de administración que respalden eficazmente el flujo de datos. El modelo de repositorio, generado tras crear e implementar la base de datos, documenta y justifica su existencia y diseño. Facilita un sistema de relaciones entre elementos de datos y sirve como guía para su utilización. En el desarrollo y análisis de software, los modelos de datos son esenciales, proporcionando un método estandarizado para definir y formatear consistentemente el contenido de la base de datos, permitiendo que diferentes aplicaciones compartan los mismos datos.

¿Por qué es importante el modelado de datos?

Un modelo de datos integral y optimizado ayuda a crear una base de datos lógica simplificada que elimina la redundancia, reduce los requisitos de almacenamiento y permite una recuperación eficiente. También equipa a todos los sistemas con una "única fuente de verdad" que es esencial para operaciones eficaces y cumplimiento regulatorio. El modelado de datos es un paso clave en dos funciones vitales de una empresa digital.


¿Cuáles son los tipos de modelado de datos?

  • Relacional: Aunque considerado "antiguo", el modelo de base de datos más prevalente hoy en día es el relacional, que organiza datos en tablas con filas y columnas de formatos fijos. Este modelo básico consta de dos elementos: métricas (valores numéricos para cálculos) y dimensiones (literales o numéricas para descripciones). Los términos clave incluyen "relación" (tabla), "atributo" (columna), "cuerpo" (fila) y "campo" (conjunto de valores de una columna). Aunque hay otros términos y requisitos estructurales, las relaciones definidas en la estructura son fundamentales. Elementos comunes conectan tablas, y estas pueden tener relaciones explícitas, como uno a uno, uno a muchos o muchos a muchos.

Tipos de Datos de Oracle 21c

Oracle 21c La innovadora y poderosa Oracle Database 21c ha llegado para definir nuevos estándares en la gestión de bases de datos, consolidá...