Documentos de Académico
Documentos de Profesional
Documentos de Cultura
• Archivos directos: en esta clase de archivos cada registro es posible leerlos y escribirlos de
forma directa. Esto se consigue con la presentación de su dirección en el fichero.
• Archivos secuenciales: en estos archivos los registros se ordenan en forma de secuencia de tal
modo que para leer uno solo de ellos, es necesario la lectura de los anteriores.
• Clave de organización.
• Según su estructura:
o Relacionales: Una base de datos relacional es una recopilación de elementos de datos con
relaciones predefinidas entre ellos. Estos elementos se organizan como un conjunto de tablas con
columnas y filas. Cada columna de una tabla guarda un determinado tipo de datos y un campo
almacena el valor real de un atributo. Las más extendidas son:
• Oracle
• MySQL
• SQL Server
• PostgreSQL
• SQLite
• Access
• Cassandra
• Redis
• MongoDB
• CouchDB
• Según su ubicación:
• Locales: Son las que están instaladas en un equipo local y que no necesitan una conexión
remota para acceder a ellas.
• Distribuidas: Son las que están en un equipo remoto, se accede a ellas a través de una red de
comunicaciones. Permiten que las aplicaciones sean varias y ubicadas remotamente, la base de
datos está en un servidor (o en varios) y la aplicación accede a los datos desde un “cliente”. A
esta arquitectura se la suele llamar “Cliente/Servidor”.
(*) Dependiendo de la forma en la que almacenen la información, nos podemos encontrar varios
tipos distintos de bases de datos NoSQL:
• Ayudar al usuario a obtener más información, debido a la facilidad que provee esta estructura
para aportar datos a los usuarios.
• Compartir los Datos. Usuarios de distintas ubicaciones pueden compartir, datos si están
autorizados. Esto implica que, si un dato cambia de contenido como por ejemplo la dirección de
un cliente, todos los usuarios que pueden acceder a ese dato, verán inmediatamente el cambio
efectuado.
• Consistencia. Al controlarse la redundancia, cuando actualizas un dato, todos los usuarios
autorizados de la Base de Datos pueden ver el cambio independientemente de que estén
trabajando en distintos sistemas.
• Flexibilidad y rapidez al obtener datos. Aquí el usuario puede fácilmente obtener información
de la Base de Datos con tan solo escribir unas breves instrucciones. Esto evita el antiguo y
burocrático proceso de llenar una petición al Centro de Informática para poder obtener un
informe.
En prácticamente cualquier base de datos actual existen cuatro elementos esenciales: tablas,
consultas, informes y formularios. Todos son indispensables y necesarios:
• Con las consultas podremos acceder a los datos almacenados, ordenarlos y filtrarlos por
diferentes criterios.
• Atributos: Son las características, rasgos y propiedades de una entidad, que toman como valor
una instancia particular. Es decir, los atributos de una tabla son en realidad sus campos
descriptivos, el predicado que permite definir lo que decimos de un determinado sujeto. Por
ejemplo, de una entidad o tabla catálogo, se pueden determinar los atributos: título, subtítulo,
título paralelo, otras formas del título, autor principal, otras menciones de responsabilidad,
edición, mención de edición, editorial, lugar de publicación, fecha de publicación, ...
• Relaciones: Son el vínculo que permite definir una dependencia entre los conjuntos de dos o
más entidades. Esto es la relación entre la información contenida en los registros de varias
tablas. Por ejemplo, los usuarios suelen clasificarse según una lista de tipos de usuarios, ya sean
profesores, alumnos o investigadores. De esta forma es posible emitir la relación entre el
usuario Jorge Martínez como alumno y Enrique Valtierra como profesor. Las relaciones son
definidas de forma natural en un diagrama relacional para expresar un modelo cognitivo que
dará lugar posteriormente a las interrelaciones de las entidades.
Modelo E/R extendido
Modelo E/R extendido
Existe otro enfoque del modelo E/R, conocido como “Modelo E/R extendido (ERE)”. El Modelo
Entidad-Relación Extendido incluye todos los conceptos del Modelo Entidad-Relación e incorpora
los conceptos de Subclase y Superclase con los conceptos asociados de Especialización y
Generalización. Otro nuevo concepto incluido por el ERE es el de Categoría. Asociado a estos
conceptos, está el importante mecanismo de Herencia de atributos. Habrá que tener en cuenta que
no existe una terminología estandarizada para estos conceptos.
Subclases y Superclases.
En el modelo Entidad-Relación, una entidad agrupa un conjunto de ocurrencias de entidad del
mismo tipo. En muchos casos, estas ocurrencias se pueden agrupar a su vez en otros subconjuntos
que tienen un significado propio para los propósitos de la Base de Datos y, por tanto, deberían
representarse de forma explícita.
Por ejemplo, la entidad EMPLEADO puede a su vez subdividirse en SECRETARIA, INGENIERO,
JEFE, TÉCNICO, ASALARIADO, SUBCONTRATADO, etc. El conjunto de ocurrencias de
entidad en cada una de estas entidades será un subconjunto de las ocurrencias de entidad de
EMPLEADO, ya que, por ejemplo, un ingeniero también es un empleado. Llamaremos a cada uno
de estos subconjuntos Subclases de la entidad EMPLEADO y a EMPLEADO una Superclase de
cada uno de estos subconjuntos.
Llamaremos a la relación existente entre las Superclases y las Subclases como relación
Clase/Subclase. En el ejemplo anterior, EMPLEADO / SECRETARIA y EMPLEADO / TÉCNICO
son dos relaciones Clase/Subclase. Hay que tener en cuenta que una ocurrencia de una Subclase
representa el mismo objeto real que alguna correspondiente a su Superclase, por ejemplo, la
SECRETARIA "Concha Leco" será también la EMPLEADO "Concha Leco". Por tanto, la
ocurrencia de Subclase es la misma que en la Superclase, pero con un rol específico. Unas
ocurrencias de Subclase no tienen sentido si no es a su vez ocurrencia de Superclase. Por otro lado,
una ocurrencia de superclase puede ser a su vez ocurrencia de varias subclases o de ninguna. Por
ejemplo, "Roberto Mate" como ocurrencia de EMPLEADO puede a su vez pertenecer a subclases
INGENIERO y ASALARIADO.
Herencia de atributos en la relación Clase/subclase:
Debido a que una subclase es a su vez parte se una superclase, la subclase tendrá sus atributos
específicos, así como los atributos correspondientes a la superclase a la que pertenece. Esto quiere
decir que la ocurrencia de entidad de una subclase hereda los atributos correspondientes a la
superclase a la que pertenece. De la misma manera hereda las relaciones en las que su
correspondiente superclase participa.
Especialización
El proceso por el que se definen las diferentes subclases de una superclase se conoce como
especialización. El conjunto de subclases se define basándonos en características diferenciadoras de
las ocurrencias de entidad de la superclase. Por ejemplo, el conjunto se subclases {SECRETARIA,
INGENIERO, TECNICO} es una especialización de la superclase EMPLEADO mediante la
distinción del tipo de trabajo en cada ocurrencia de entidad. Podemos tener varias especializaciones
de una misma entidad basándonos en distintos criterios. Por Modelo Entidad-Relación Extendido
ejemplo, otra especialización de EMPLEADO podría dar lugar a las subclases ASALARIADO y
SUBCONTRATADO, dependiendo del tipo de contrato...
Modelo relacional
Modelo relacional
Modelo de organización y gestión de bases de datos, consistente en el almacenamiento de datos en
tablas compuestas por filas o tuplas, y columnas o campos. Se distingue de otros modelos, como el
jerárquico, por ser más comprensible para el usuario inexperto, y por basarse en la lógica de
predicados para establecer relaciones entre distintos datos
• Toda relación N:M se convierte en una tabla que tendrá como clave primaria las dos claves
primarias de las entidades que se asocian.
• En las relaciones 1:N la clave primaria de la entidad con cardinalidad 1 pasa a la tabla de la
entidad cuya cardinalidad es N.
• En las relaciones N:M existen tres posibilidades: Si la cardinalidad es (0,1) en ambas entidades,
se crea tabla. Mientras que si la cardinalidad de una es (0,1) y de la otra es (1,1) se suele pasar la
clave primaria de (1,1) a la de (0,1). Si la cardinalidad de ambas es (1,1) se pasa la clave de
cualquiera de ellas a la otra.
Ejemplo:
Normalización
Normalización
La normalización es el proceso de organizar los datos de una base de datos. Se incluye la creación
de tablas y el establecimiento de relaciones entre ellas según reglas diseñadas tanto para proteger
los datos como para hacer que la base de datos sea más flexible al eliminar la redundancia y las
dependencias incoherentes.
Los datos redundantes desperdician el espacio de disco y crean problemas de mantenimiento. Si hay
que cambiar datos que existen en más de un lugar, se deben cambiar de la misma forma
exactamente en todas sus ubicaciones. Un cambio en la dirección de un cliente es mucho más fácil
de implementar si los datos sólo se almacenan en la tabla Clientes y no en algún otro lugar de la
base de datos.
¿Qué es una "dependencia incoherente"? Aunque es intuitivo para un usuario mirar en la tabla
Clientes para buscar la dirección de un cliente en particular, puede no tener sentido mirar allí el
salario del empleado que llama a ese cliente. El salario del empleado está relacionado con el
empleado, o depende de él, y por lo tanto se debería pasar a la tabla Empleados. Las dependencias
incoherentes pueden dificultar el acceso porque la ruta para encontrar los datos puede no estar o
estar interrumpida.
Hay algunas reglas en la normalización de una base de datos. Cada regla se denomina una "forma
normal". Si se cumple la primera regla, se dice que la base de datos está en la "primera forma
normal". Si se cumplen las tres primeras reglas, la base de datos se considera que está en la "tercera
forma normal". Aunque son posibles otros niveles de normalización, la tercera forma normal se
considera el máximo nivel necesario para la mayor parte de las aplicaciones.
Al igual que con otras muchas reglas y especificaciones formales, en los escenarios reales no
siempre se cumplen los estándares de forma perfecta. En general, la normalización requiere tablas
adicionales y algunos clientes consideran éste un trabajo considerable. Si decide infringir una de las
tres primeras reglas de la normalización, asegúrese de que su aplicación se anticipa a los problemas
que puedan aparecer, como la existencia de datos redundantes y de dependencias incoherentes.
En las descripciones siguientes se incluyen ejemplos.
Primera forma normal:
• No use varios campos en una sola tabla para almacenar datos similares. Por ejemplo, para
realizar el seguimiento de un elemento del inventario que proviene de dos orígenes posibles, un
registro del inventario puede contener campos para el Código de proveedor 1 y para el Código
de proveedor 2.
• Cree tablas independientes para conjuntos de valores que se apliquen a varios registros.
• Los registros no deben depender de nada que no sea una clave principal de una tabla, una clave
compuesta si es necesario. Por ejemplo, considere la dirección de un cliente en un sistema de
contabilidad. La dirección se necesita en la tabla Clientes, pero también en las tablas Pedidos,
Envíos, Facturas, Cuentas por cobrar y Colecciones. En lugar de almacenar la dirección de un
cliente como una entrada independiente en cada una de estas tablas, almacénela en un lugar, ya
sea en la tabla Clientes o en una tabla Direcciones independiente.
Tercera forma normal:
• Elimine los campos que no dependan de la clave.
• Los valores de un registro que no sean parte de la clave de ese registro no pertenecen a la tabla.
En general, siempre que el contenido de un grupo de campos pueda aplicarse a más de un único
registro de la tabla, considere colocar estos campos en una tabla independiente.
• La cuarta forma normal, también llamada Forma normal de Boyce Codd (BCNF, Boyce Codd
Normal Form), y la quinta forma normal existen, pero rara vez se consideran en un diseño real.
Si no se aplican estas reglas, el diseño de la base de datos puede ser menos perfecto, pero no
debería afectar a la funcionalidad.
• Convertir entidades en tablas físicas. Cuando la entidad es fuerte se convierte en una tabla.
• Escoger qué atributos se utilizarán para las columnas de las tablas y en qué tablas deben ir.
• Escoger los nombres finales de las columnas, en ocasiones abreviándolos. Esta tarea es
importante en bases de datos que limitan el tamaño de nombres de columnas.
• Escoger también qué columnas serán índices y de esta manera volver más eficiente la búsqueda
de información en las consultas SQL sobre estas.
• Identificar las vistas a definirse en las tablas. Una vista es una forma alternativa para describir
los datos que existen en una o más tablas.
• Resolver las relaciones (n:m ó muchos a muchos) entre entidades. Usualmente se crea una tabla
extra que contiene las claves de ambas tablas relacionadas.
•UNIQUE. La restricción ÚNICA asegura que todos los valores en una columna sean diferentes.
Las restricciones ÚNICA y PRIMARY KEY proporcionan una garantía de exclusividad para
una columna o conjunto de columnas. Una restricción PRIMARY KEY tiene automáticamente
una restricción ÚNICA. Sin embargo, puede tener muchas restricciones ÚNICAS por tabla,
pero solo una restricción PRIMARY KEY por tabla.
•FOREIGN KEY. La clave externa o FOREIGN KEY, es una columna o varias columnas, que
sirven para señalar cual es la clave primaria de otra tabla. La columna o columnas señaladas
como FOREIGN KEY, solo podrán tener valores que ya existan en la clave primaria PRIMARY
KEY de la otra tabla.
•CHECK- Se utiliza para limitar el rango de valores que se puede colocar en una columna.
•NOT NULL. La restricción NOT NULL impone una columna para NO aceptar valores NULL.
Esto obliga a un campo a contener siempre un valor, lo que significa que no puede insertar un
nuevo registro o actualizar un registro sin agregar un valor a este campo.
• Numéricos
• Fecha
• String
Tipos de dato numéricos, su ocupación y rangos de valores.
• INT (INTEGER): Ocupación de 4 bytes con valores entre -2147483648 y 2147483647 o entre 0
y 4294967295.
• SMALLINT: Ocupación de 2 bytes con valores entre -32768 y 32767 o entre 0 y 65535.
• TINYINT: Ocupación de 1 bytes con valores entre -128 y 127 o entre 0 y 255.
• BIGINT: Ocupación de 8 bytes con valores entre -8388608 y 8388607 o entre 0 y 16777215.
• DECIMAL (NUMERIC): Almacena los números de coma flotante como cadenas o string.
• FLOAT (m,d): Almacena números de coma flotante, donde ‘m’ es el número de dígitos de la
parte entera y ‘d’ el número de decimales.
• DOUBLE (REAL): Almacena número de coma flotante con precisión doble. Igual que FLOAT,
la diferencia es el rango de valores posibles.
• BIT (BOOL, BOOLEAN): Número entero con valor 0 o 1.
Tipos de dato con formato fecha, su ocupación y valores:
• DATE: Válido para almacenar una fecha con año, mes y día, su rango oscila entre ‘1000-01-01′
y ‘9999-12-31′.
• TIME: Válido para almacenar una hora (horas-minutos-segundos). Su rango de horas oscila
entre -838-59-59 y 838-59-59. El formato almacenado es ‘HH:MM:SS’.
• TIMESTAMP: Almacena una fecha y hora UTC. El rango de valores oscila entre ‘1970-01-01
00:00:01′ y ‘2038-01-19 03:14:07′.
• YEAR: Almacena un año dado con 2 o 4 dígitos de longitud, por defecto son 4. El rango de
valores oscila entre 1901 y 2155 con 4 dígitos. Mientras que con 2 dígitos el rango es desde
1970 a 2069 (70-69).
Tipos de datos con formato “string”:
• TINYBLOB: Una longitud máxima de 255 caracteres. Válido para objetos binarios como son
un fichero de texto, imágenes, ficheros de audio o vídeo. No distingue entre minúsculas y
mayúsculas.
• BLOB: Una longitud máxima de 65.535 caracteres. Válido para objetos binarios como son un
fichero de texto, imágenes, ficheros de audio o vídeo. No distingue entre minúsculas y
mayúsculas.
• MEDIUMBLOB: Una longitud máxima de 16.777.215 caracteres. Válido para objetos binarios
como son un fichero de texto, imágenes, ficheros de audio o vídeo. No distingue entre
minúsculas y mayúsculas.
• LONGBLOB: Una longitud máxima de 4.294.967.298 caracteres. Válido para objetos binarios
como son un fichero de texto, imágenes, ficheros de audio o vídeo. No distingue entre
minúsculas y mayúsculas.
• SET: Almacena 0, uno o varios valores una lista con un máximo de 64 posibles valores.
• TINYTEXT: Una longitud máxima de 255 caracteres. Sirve para almacenar texto plano sin
formato. Distingue entre minúsculas y mayúsculas.
• TEXT: Una longitud máxima de 65.535 caracteres. Sirve para almacenar texto plano sin
formato. Distingue entre minúsculas y mayúsculas.
• MEDIUMTEXT: Una longitud máxima de 16.777.215 caracteres. Sirve para almacenar texto
plano sin formato. Distingue entre minúsculas y mayúsculas.
• LONGTEXT: Una longitud máxima de 4.294.967.298 caracteres. Sirve para almacenar texto
plano sin formato. Distingue entre minúsculas y mayúsculas.
Realización de consultas
Realización de consultas
Un tipo de datos es un atributo que especifica el tipo de datos que el objeto puede contener: datos de
enteros, datos de caracteres, datos de moneda, datos de fecha y hora, cadenas binarias, etc.
Cada gestor de base de datos tiene algunos matices para la definición de tipos de datos, vamos a
detallar los de MySQL: Repasando la documentación oficial podríamos dividir en 3 grandes
grupos estos datos:
• Numéricos
• Fecha
• String
Hay gestores de bases de datos que incorporan herramientas gráficas para realizar consultas,
también hay productos específicos ajenos al propio gestor, unos libres y otros con coste. Pero lo
aconsejable es aprender SQL para hacer las consultas con sus herramientas.
Vamos a dar un somero repaso a las sentencias que pueden intervenir en las consultas con SQL:
Sentencia SELECT: La sentencia SELECT va a permitir realizar operaciones de selección,
ordenación, agrupación y filtrado de registros; veamos algunos ejemplos.
La posible sintaxis es:
SELECT [DISTINCT | ALL, ] { * | <selección de lista>}
FROM <tabla de referencia> [ , <tabla de referencia> } ]
[WHERE <condición de búsqueda> ]
[GROUP BY <especificación de agrupación>]
[HAVING <condición de búsqueda>]
[ORDER BY <condición de orden>]
Algunos ejemplos:
Exclusión de filas repetidas, usando el modificador “Distinct” mostrará solo las “filas” en
las que no haya repetición de datos
Mostrará las filas en las que los contenidos de los campos indicados no se repitan
Mostrará los campos seleccionados y los clasificará por fecha, en orden descendente
Clausula WHERE: La función principal de una consulta es seleccionar sólo aquellos registros de
la tabla o tablas seleccionadas que necesites en cada caso. Pues bien, si quieres hacerlo mediante
sentencias SQL es imprescindible añadir la cláusula WHERE al comando SELECT.
Esta cláusula refuerza sus posibilidades de uso con el uso de los operadores Y(AND) y O(OR).
También con los operadores lógicos:
<= Menor o igual que Devuelve los registros cuyos valores son menores o
iguales a la condición.
>= Mayor o igual que Devuelve los registros cuyos valores son mayores o
iguales a la condición.
Algunos ejemplos:
Obtenemos todos los registros (filas) que los gastos sean 100
Obtenemos todos los registros (filas) que los gastos estén entre 100 y 199 y ordenados de
forma ascendente
Ahora establecemos un filtro por importe y además por valores de otros dos campos.
• LIKE: para la comparación de un modelo. Para ello utiliza los caracteres comodín especiales:
“%” y “_”. Con el primero indicamos que en su lugar puede ir cualquier cadena de caracteres, y
con el segundo que puede ir cualquier carácter individual (un solo carácter). Con la
combinación de estos caracteres podremos obtener múltiples patrones de búsqueda. Por
ejemplo:
• El nombre empieza por A y después contiene un solo carácter cualquiera: Nombre LIKE
‘A_’
• El nombre empieza una A, después cualquier carácter, luego una E y al final cualquier
cadena de caracteres: Nombre LIKE ‘A_E%’
• Clientes nacidos entre 1970 y 1979: FechaNac BETWEEN ‘19700101’ AND ‘19791231’
• IN( ): para especificar una relación de valores concretos. Por ejemplo: Ventas de los Clientes 10,
15, 30 y 75: CodCliente IN(10, 15, 30, 75).
• UPDATE
• INSERT
• DELETE
Sentencia UPDATE: Permite actualizar registros de una tabla.
La sintaxis de la sentencia es:
UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2
WHERE columna3 = valor3
Ejemplo:
UPDATE personas
SET apellido2 = 'RODRIGUEZ'
WHERE nombre = 'ANTONIO'
AND apellido1 = 'GARCIA'
AND apellido2 = 'BENITO'
En este ejemplo cambiamos el segundo apellido a todas las personas de la tabla que se llamen
“Antonio Garcia Benito”.
Hay una variación que permite, mediante una subconsulta, hacer una actualización masiva de los
datos de una tabla. La sintaxis de una sentencia de este tipo sería:
“A” es la subconsulta, SQL seleccionará todos los registros que cumplan las condiciones
establecidas en la “SELECT” para incluir en el “WHERE”, y “B” cambiará el contenido del campo
de referencia.
Sentencia INSERT: Agrega uno o más registros a una tabla.
La sintaxis de la sentencia es:
INSERT INTO "tabla1" ("columna1", "columna2", ...)
SELECT "columna3", "columna4", ...
FROM "tabla2";
Un ejemplo:
INSERT INTO usuarios (nombre, apellidos) VALUES ('Juan','Garcia Pérez');
Comando DELETE: Permite eliminar registros de una tabla.
La sintaxis de la sentencia es:
DELETE FROM nombre_tabla
WHERE nombre_columna = valor
Esta sentencia puede ser peligrosa, ya que:
DELETE * FROM nombre_tabla;
Borraría el contenido completo de la tabla.
Construcción de guiones
Construcción de guiones
Los guiones para la administración de las bases de datos, se pueden considerar listas de comandos
que se ejecutan secuencialmente. Teniendo en cuenta que hay muchas operaciones de bases de datos
que se repiten, los guiones nos facilitan el trabajo ya que además de simplificar el trabajo, por la
simple estandarización de las tareas, también facilitan la administración de la seguridad de acceso a
las bases de datos.
Los guiones más frecuentes son los llamados “Procedimientos almacenados”, un procedimiento
almacenado es un programa (o procedimiento) almacenado físicamente en una base de datos. Su
implementación varía de un gestor de bases de datos a otro. La ventaja de un procedimiento
almacenado es que, al ser mandado ejecutar en respuesta a una petición de usuario, es ejecutado
directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado. Como
tal, posee acceso directo a los datos que necesita manipular y sólo necesita enviar sus resultados de
regreso al usuario, deshaciéndose de la sobrecarga resultante de comunicar grandes cantidades de
datos salientes y entrantes.
Los procedimientos pueden ser ventajosos: Cuando una base de datos es manipulada desde muchos
programas externos. Al incluir la lógica de la aplicación en la base de datos utilizando
procedimientos almacenados, la necesidad de embeber la misma lógica en todos los programas que
acceden a los datos es reducida. Esto puede simplificar la creación y, particularmente, el
mantenimiento de los programas involucrados.
Los guiones permiten realizar tareas sencillas como configurar la orientación de la impresión
o tareas complejas como preparar un correo personalizado para los clientes.
• Nivel global: Los privilegios globales se aplican a todas las bases de datos de un servidor dado.
• Nivel de base de datos: Los privilegios de base de datos se aplican a todos los objetos en una
base de datos concreta.
• Nivel de tabla: Los privilegios de tabla se aplican a todas las columnas de una tabla
determinada.
• Nivel de columna: Los privilegios de columna se aplican a una columna individual en una tabla
dada.