Está en la página 1de 30

Sistemas de almacenamiento de la información

Sistemas de almacenamiento de la información


Ficheros
Todos los datos informáticos, con independencia del tipo de información, se almacenan en los
dispositivos de almacenamiento, en unos elementos llamados archivos o ficheros. Así, un archivo
es el elemento de almacenamiento más básico, y se caracteriza por su nombre, su tipo, su tamaño,
su fecha de creación o modificación, y los atributos.
Una clasificación de tipos de ficheros puede ser:

• 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.

• Archivos indexados: En este modo de organización, al fichero le acompaña un fichero de índice


que tiene la función de permitir el acceso directo a los registros del fichero de datos.
El índice se puede organizar de diversas formas, las más típicas son: secuencial, multinivel y árbol.
A través del índice podremos procesar un fichero de forma secuencial o de forma directa según la
clave de indexación, y esto independientemente de cómo esté organizado el fichero por sí mismo.
El índice debe estar organizado en función de alguno de los campos de los registros de datos. Se
pueden tener tantos índices como se quiera variando la clave (o campo) que se emplee. El índice
está formado por registros (entradas) que contienen:

• Clave de organización.

• Puntero(s) al fichero de datos, en concreto al registro que corresponda.


Bases de datos
Una base de datos es una colección de información organizada de forma que un programa de
ordenador pueda seleccionar rápidamente los fragmentos de datos que necesite. Las bases de datos
tradicionales se organizan por tablas, campos y registros.
Hay varios tipos de bases de datos:

• 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

• No relacionales: También llamadas “NoSQL” son sistemas de almacenamiento de


información que no cumplen con el esquema Entidad/Relación. Tampoco utilizan una
estructura de datos en forma de tabla donde se van almacenando los datos, sino que para el
almacenamiento hacen uso de otros formatos (*). Las más conocidas son:

• 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:

• Por Clave / Valor.

• Bases de datos documentales.

• Bases de datos en grafo.

• Bases de datos orientadas a objetos.


Funciones de una base de datos
La principal función de una base de datos es proporcionar un medio que sea eficiente para
almacenar y extraer datos. Las posibilidades que aporta esa función, son:

• 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:

• Las tablas permitirán almacenar los datos.

• Con las consultas podremos acceder a los datos almacenados, ordenarlos y filtrarlos por
diferentes criterios.

• Los informes serán la forma más eficaz de presentar nuestros datos.

• Con los formularios se facilitan las tareas de introducción de datos.


Esta es una definición muy básica de cada uno de los elementos que forman parte de una base de
datos, pero suficiente para comenzar a familiarizarnos con estos conceptos.
Sistemas de almacenamiento de la información

Diseño lógico de bases de datos


Diseño lógico de bases de datos
La administración de datos ha llegado a ser una de las mayores actividades en muchas
organizaciones. A medida que nos movemos hacia una sociedad dirigida al aumento de
información, el cómo manejar los datos para maximizar su utilidad es un problema mayor. Sistemas
de archivos computarizados y sistemas de base de datos facilitan la tarea de mantenimiento y
actualización de gran cantidad de datos. Sin embargo, el problema de cómo organizar los datos para
utilizar completamente la capacidad del archivo o el sistema de base de datos no lo entiende la
gente que trabaja con ellos. El objetivo de esta publicación es proveer una metodología que hace
más fácil el entendimiento y uso del proceso de organizar los datos.
"El diseño lógico de la base de datos" es el proceso de diseñar la estructura lógica de la base de
datos. Cubre un análisis del ambiente de la aplicación y la disponibilidad de los tipos de estructuras
lógicas en el sistema de la base de datos. Generalmente hay pocas herramientas para la ayuda del
proceso del diseño lógico de la base de datos; el diseñador se apoya en la intuición y la experiencia.
Como resultado, muchas de las bases de datos existentes no están bien diseñadas..
Modelo de datos
Modelo de datos
Un modelo de base de datos es un tipo de modelo de datos que determina la estructura lógica de una
base de datos y de manera fundamental determina el modo de almacenar, organizar y manipular los
datos.
Para hacer un modelo de datos de una base de datos relacional (que son las más extendidas, al
menos de momento) se usan los diagramas de Entidad / Relación.
Un modelo entidad-relación o diagrama entidad-relación (a veces denominado por sus siglas en
inglés, E-R "Entity relationship"; en español DER: "Diagrama de Entidad-Relación") es una
herramienta para el modelado de datos que permite representar las entidades relevantes de un
sistema de información, así como sus interrelaciones y propiedades.
Los elementos fundamentales de un modelo E/R son:

• Entidades: La entidad es cualquier clase de objeto o conjunto de elementos presentes o no, en


un contexto determinado dado por el sistema de información o las funciones y procesos que se
definen en un plan de automatización. Dicho de otra forma, las entidades las constituyen las
tablas de la base de datos que permiten el almacenamiento de los ejemplares o registros del
sistema, quedando recogidos bajo la denominación o título de la tabla o entidad. Por ejemplo, la
entidad usuarios guarda los datos personales de los usuarios de la biblioteca, la entidad catalogo
registra todos los libros catalogados, la entidad circulación todos los libros prestados y
devueltos y así sucesivamente con todos los casos.

• 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

La terminología del Modelo relacional incluye:


La terminología del Modelo relacional incluye:
Tabla: es el nombre que recibe cada una de las relaciones que se establecen entre los datos
almacenados; cada nueva relación da lugar a una tabla. Están formadas por filas, también llamadas
tuplas, donde se describen los elementos que configuran la tabla (es decir, los elementos de la
relación establecida por la tabla), columnas o campos, con los atributos y valores correspondientes,
y el dominio, concepto que agrupa a todos los valores que pueden figurar en cada columna.
Claves: elementos que impiden la duplicidad de registros, una de las grandes desventajas que
presentan otros modelos de organización y gestión de bases de datos. Existen dos grandes tipos de
claves: las claves primarias y las secundarias o externas.
Claves primarias: son los atributos (columnas) según el tipo de relación que se ha definido en la
tabla. Pueden añadirse otros atributos específicos y propios.
Claves externas o secundarias: son las claves que se definen para cada una de las claves primarias
establecidas para los elementos o entidades de una relación.
Restricción de identidad: límites y restricciones que se imponen en las relaciones, imprescindibles
para mantener la significación correcta de la base de datos. Es un concepto íntimamente vinculado a
las reglas de integridad propias del modelo relacional, el cumplimiento de las cuales está
garantizado por las claves primarias y externas.
Hemos estado definiendo el modelo relacional, y sus relaciones con el modelo Entidad-Relación.
Pero ¿cómo se convierte el modelo entidad-relación en el modelo relacional? Es decir, a partir de un
esquema entidad-relación, ¿cómo obtengo sus correspondientes tablas?:
Para pasar a tablas todos los datos sin dejarnos nada y que las tablas tengan sentido por si solas,
tenemos que seguir unos pasos:

• Toda entidad se transforma en una tabla.

• Todo atributo se transforma en una columna dentro de la tabla a la que pertenece.


• El identificador de la entidad se convierte en la clave primaria de la tabla.

• 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:

• Elimine los grupos repetidos de las tablas individuales.

• Cree una tabla independiente para cada conjunto de datos relacionados.

• Identifique cada conjunto de datos relacionados con una clave principal.

• 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.

• ¿Qué ocurre cuando se agrega un tercer proveedor? Agregar un campo no es la respuesta,


requiere modificaciones en las tablas y el programa, y no admite fácilmente un número variable
de proveedores. En su lugar, coloque toda la información de los proveedores en una tabla
independiente denominada Proveedores y después vincule el inventario a los proveedores con el
número de elemento como clave, o los proveedores al inventario con el código de proveedor
como clave.
Segunda forma normal:

• Cree tablas independientes para conjuntos de valores que se apliquen a varios registros.

• Relacione estas tablas con una clave externa.

• 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.

• Por ejemplo, en una tabla Contratación de empleados, puede incluirse el nombre de la


universidad y la dirección de un candidato. Pero necesita una lista completa de universidades
para enviar mensajes de correo electrónico en grupo. Si la información de las universidades se
almacena en la tabla Candidatos, no hay forma de enumerar las universidades que no tengan
candidatos en ese momento. Cree una tabla Universidades independiente y vincúlela a la tabla
Candidatos con el código de universidad como clave. EXCEPCIÓN: cumplir la tercera forma
normal, aunque en teoría es deseable, no siempre es práctico. Si tiene una tabla Clientes y desea
eliminar todas las dependencias posibles entre los campos, debe crear tablas independientes
para las ciudades, códigos postales, representantes de venta, clases de clientes y cualquier otro
factor que pueda estar duplicado en varios registros. En teoría, la normalización merece el
trabajo que supone. Sin embargo, muchas tablas pequeñas pueden degradar el rendimiento o
superar la capacidad de memoria o de archivos abiertos. Puede ser más factible aplicar la tercera
forma normal sólo a los datos que cambian con frecuencia. Si quedan algunos campos
dependientes, diseñe la aplicación para que pida al usuario que compruebe todos los campos
relacionados cuando cambie alguno.
Otras formas de normalización:

• 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.

Diseño físico de bases de datos


Diseño físico de bases de datos
El diseño físico de bases de datos es un proceso que forma parte diseño de bases de datos, y su
resultado final es un esquema físico de la base de datos.
El diseño físico parte del esquema lógico de bases de datos y da como resultado un esquema físico
de bases de datos. Este esquema depende del tipo de SGBD y del SGBD específico que se emplee.
Durante el diseño físico de la base de datos, se transforman las entidades en tablas, las instancias en
filas y los atributos en columnas. Las tareas a llevar a cabo durante este proceso son:

• 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 qué columnas se transformarán en claves de identificación de la tabla.

• 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.

• Aplicar cierta desnormalización, dado que las reglas de normalización no consideran el


rendimiento de la base de datos. Por lo que, en ocasiones, cierta desnormalización es necesaria
para un funcionamiento más eficiente.
Teniendo en cuenta que cada gestor de bases de datos relacional (SGBDR) tiene sus propias
herramientas, para la creación de elementos de una base de datos, nos tenemos que ceñir a lo que
ofrezca cada Gestor.

Ejemplos de herramientas gráficas de gestores de base de


datos:
Ejemplos de herramientas gráficas de gestores de base de datos:
Crear tablas en PostgreSQL:
Crear tabla en SQLite:
Crear tabla en Access:
No obstante, SQL nos ofrece herramientas para esas tareas, son los Comandos de Definición de
Datos DDL (Data Definition Language):

Comandos SQL para la definición de datos


Comandos SQL para la definición de datos

•CREATE DATABASE. Crear una nueva base de datos.

•CREATE TABLE. Crea nuevas tablas.

•ALTER TABLE. Modifica una tabla.

•DROP TABLE. Borra una tabla.

•CREATE INDEX .Crea un índice.


•DROP INDEX. Borra un índice.
Estos comandos se complementan con otros para la implementación de “Constraints” o
“Restricciones”. Cuyo objetivo es asegurar la integridad de los datos almacenados en nuestras
tablas, podemos crear restricciones, algunos los hemos utilizado sin querer o simplemente
desconocemos que lo que hicimos fue una restricción, por ejemplo, una clave primaria. Estas
restricciones las podemos implementar en al momento de crear nuestras tablas o de modificarlas,
también es necesario señalar que dichas restricciones son objetos propios de la base de datos y por
lo tanto requieren de un nombre único compuesto del nombre del esquema al que pertenece y el
nombre que lo identifica.
Los diferentes tipos de restricción que existen son:

•· PRIMARY KEY. Asigna un campo de la tabla como clave primaria.

•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.

Ejemplos de “scripts” SQL para crear tablas:


Ejemplos de “scripts” SQL para crear tablas:

Creación de la tabla “prod_acab_piezas” en PostgreSQL:


CREATE TABLE prod_acab_piezas
(
fecha date NOT NULL,
turno character(1) NOT NULL,
puesto character(5) NOT NULL,
ref_pieza character(40) NOT NULL,
lote character(11) NOT NULL,
responsable numeric(5),
cant_fabricadas numeric(11,2),
cant_embaladas numeric(11,2),
cant_defectos numeric(11,2),
observaciones text,
cant_recuperables numeric(11,2),
cant_arranque numeric(11,2) DEFAULT 0,
cant_pruebas numeric(11,2) DEFAULT 0,
CONSTRAINT prod_acab_piezas_pkey PRIMARY KEY (fecha, turno, puesto, ref_pieza, lote)
)
ALTER TABLE prod_acab_piezas OWNER TO jago2030;
Creación de la tabla “Orders_2” en SQLite:
CREATE TABLE "Orders_2" ("OrderID" DOUBLE Primary Key,
"CustomerID" CHAR,
"EmployeeID" DOUBLE,
"OrderDate" DATETIME,
"RequiredDate" DATETIME,
"ShippedDate" DATETIME,
"ShipVia" DOUBLE,
"Freight" REAL,
"ShipName" CHAR,
"ShipAddress" CHAR,
"ShipCity" CHAR,
"ShipRegion" CHAR,
"ShipPostalCode" CHAR,
"ShipCountry" CHAR)
Tipos de datos
Tipos de datos
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
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.

• MEDIUMINT: Ocupación de 3 bytes con valores entre -8388608 y 8388607 o entre 0 y


16777215.

• 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′.

• DATETIME: Almacena una fecha (año-mes-día) y una hora (horas-minutos-segundos), su rango


oscila entre ‘1000-01-01 00:00:00′ y ‘9999-12-31 23:59:59′.

• 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”:

• CHAR: Ocupación fija cuya longitud comprende de 1 a 255 caracteres.

• VARCHAR: Ocupación variable cuya longitud comprende de 1 a 255 caracteres.

• 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.

• ENUM: Igual que SET pero solo puede almacenar un valor.

• 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:

Select * From gastos

Nos mostrará todos los campos de la tabla

Select fecha, descripcion, tipo_gasto From gastos

Selección de columnas, nos mostrará solo los campos que indicamos

Select Distinct descripcion From gastos

Exclusión de filas repetidas, usando el modificador “Distinct” mostrará solo las “filas” en
las que no haya repetición de datos

Select Distinct descripcion,tipo_gasto From gastos

Mostrará las filas en las que los contenidos de los campos indicados no se repitan

Select fecha,descripcion,tipo_gasto,importe From gastos


order by fecha

Mostrará los campos seleccionados y los clasificará por fecha

Select fecha,descripcion,tipo_gasto,importe From gastos


order by fecha desc

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:

Operador Se lee Resultado

= Igual a Devuelve los registros que coinciden con la


condición.

< Menor que Muestra aquellos registros cuyos valores son


estrictamente menores que la condición.

> Mayor que Muestra aquellos registros cuyos valores son


estrictamente mayores que la condición.

<= 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.

<> Distinto de Sólo muestra aquellos registros que tienen valores


distintos a la condición.

Algunos ejemplos:

SELECT * FROM gastos


where importe=100

Obtenemos todos los registros (filas) que los gastos sean 100

SELECT * FROM gastos


where importe>100 and importe <199
order by importe

Obtenemos todos los registros (filas) que los gastos estén entre 100 y 199 y ordenados de
forma ascendente

SELECT * FROM gastos


where importe>100 and importe <199
order by importe desc

Igual que el anterior, pero ordenados de forma descendente.


SELECT * FROM gastos
where (importe>100 and importe <199) or banco='Bankia'
order by importe desc

Igual que el anterior, o que el pago se haya hecho por Bankia.

SELECT * FROM gastos


where (importe>100 and importe <199) and banco='Bankia'
order by importe

Igual que el anterior, y que el pago se haya hecho por Bankia.

SELECT * FROM gastos


where importe>100 and importe <199 and banco='Bankia'
order by importe

El resultado obtenido es igual que el anterior.


El resultado es el mismo con paréntesis que sin ellos

SELECT * FROM gastos


where (importe>90 and importe <100) and (origen='Hacienda' and banco='Bankia')
order by importe

Ahora establecemos un filtro por importe y además por valores de otros dos campos.

SELECT * FROM gastos


where (importe>100 and importe <199) or (origen='Hacienda' and banco='Bankia')
order by importe

También podemos usar algunos predicados de selección como:

• 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: Nombre LIKE ‘A%’

• El nombre acaba por A: Nombre LIKE ‘%A’

• El nombre contiene la letra A: Nombre LIKE ‘%A%’

• 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%’

• BETWEEN: para un intervalo de valores. Por ejemplo:

• Clientes entre el 30 y el 100: CodCliente BETWEEN 30 AND 100

• 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).

Edición de los datos

Edición de los datos


Los gestores de bases de datos suelen incluir herramientas gráficas para editar los contenidos de las
tablas, como por ejemplo:
En Access. Se puede crear muy fácilmente un formulario para editar el contenido de una tabla
(simplemente pulsando un icono):
En SQLite.- Pulsando doble click en un registro de la tabla.
Editar usando SQL:
En este caso SQL también tiene comandos que permiten la actualización, como:

• 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.

Gestión de la seguridad de los datos


Gestión de la seguridad de los datos
La seguridad de los datos forma parte del conjunto “Seguridad Informática”, que inicialmente tiene
dos aspectos:
Seguridad de la información:
En la Seguridad de la Información el objetivo de la protección son los datos mismos y trata de evitar
su perdida y modificación no autorizada. La protección debe garantizar en primer lugar la
confidencialidad, integridad y disponibilidad de los datos, sin embargo, existen más requisitos como
por ejemplo la autenticidad, entre otros.
El motivo o el motor para implementar medidas de protección, que responden a la Seguridad de la
Información, es el propio interés de la institución o persona que maneja los datos, porque la pérdida
o modificación de los datos, le puede causar un daño (material o inmaterial). Entonces en referencia
a un banco, por ejemplo, la pérdida o la modificación errónea, sea causado intencionalmente o
simplemente por negligencia humana, de algún registro de una cuenta bancaria, puede resultar en
pérdidas económicas u otras consecuencias negativas para la institución.
Seguridad de los datos:
En el caso de la Protección de Datos, el objetivo de la protección no son los datos en sí mismos,
sino el contenido de la información sobre personas, para evitar el abuso de esta.
Esta vez, el motivo o el motor para la implementación de medidas de protección, por parte de la
institución o persona que maneja los datos, es la obligación jurídica o la simple ética personal, de
evitar consecuencias negativas para las personas de las cuales se trata la información.
En España existe la “Ley Orgánica de Protección de Datos de Carácter Personal” que tiene por
objetivo garantizar y proteger, en lo que concierne al tratamiento de los datos personales, las
libertades públicas y los derechos fundamentales de las personas físicas, y especialmente de su
honor, intimidad y privacidad personal y familiar.
No obstante, la seguridad debe comenzar en el acceso a los propios sistemas informáticos y a sus
bases de datos.
En cuanto a las bases de datos, los propios SGBD incorporan algunas herramientas, que
fundamentalmente se agrupan en dos tipos de medidas:

• Encriptación de los datos.

• Seguridad de acceso a los datos.


La primera de ellas tiene aplicación directa, en los casos de los SGBD que disponen de
herramientas para ello.
En cuanto a la segunda, su aplicación puede ser un poco más laboriosa, ya que trabaja en forma de
seguridad de acceso a:

• 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.

• Nivel de procedimiento: Se otorgan o no privilegios a procedimientos almacenadas. Pueden ser


concedidos en los niveles globales, de base de datos, o procedimientos concretos, según el nivel
de criticidad que se considere.
Todo lo anterior hace que al poder atomizar tanto la seguridad, su administración sea enormemente
costosa. Lo que hace que en muy pocas instalaciones se llegue a esos niveles de detalle en la
administración de la seguridad.

También podría gustarte