El diseño de las bases de datos relacionales
El diseño de una base de datos
tiene las siguientes fases: recolección y análisis de requerimientos, en esta
fase los diseñadores entrevistan a los futuros usuarios de la base de datos y
documentan toda la información además de que se definen los requerimientos
funcionales que tendrán las operaciones o transiciones; La siguiente fase es el
diseño conceptual, aquí los diseñadores crean un esquema conceptual el cual contendrá
una descripción detallada de los requerimientos de la información de los
usuarios, además de que se detallan los descriptores de datos y las relaciones
entre ellos; El diseño lógico de la base de datos es la siguiente fase que
consiste en implementar el esquema de la base de datos en un gestor de base de
datos comercial o de red; la última fase es el diseño físico de la base de
datos , en esta fase ya se especifica la estructura de almacenamiento interna y
la organización de los archivos de la base de datos.
SQL Y LDD
El lenguaje de definición de
datos o LDD del SQL, permite definir las relaciones entre tablas, el cual
incluye la información siguiente: el esquema de la relación, el dominio de
valores asociado al atributo, el conjunto de índices, la información de
seguridad, autorización y la estructura de almacenamiento físico.
Los tipos de dominios en SQL
predefinidos son los siguientes: char (cadena de caracteres de longitud fija),
varchar (cadena de caracteres de longitud variable), int (entero), smallint
(entero pequeño), numeric (numero en coma flotante), real, double precisión
(son números en coma flotante de doble precisión), float (número de coma
flotante), date (fecha de calendario), time (es la hora del día), timestamp
(combinación entre date y time); recuerde respetar los tipos de datos, así como
indicar cast o as para hacer comparaciones entre dominios.
Los dominios de SQL, permiten
hacer comparaciones entre ellos mismos por ejemplo en el tipo de dato date y al
utilizar la función interval, regresa un intervalo resultado de la comparación
entre dos fechas distintas; también acontece muy a menudo que se requiera una
coerción es decir una comparación entre tipos compatibles lo cual el sql
transforma o a veces si se requiere una conversión de tipos, precisamente para
poder lograr la comparación.
También son muy útiles los
dominios en SQL, para resolver los problemas ocasionados por los nulos en los
atributos, el valor null pertenece a todos los dominios pero en situaciones
especiales es muy común retirarlo o prohibirlo en tales casos por ejemplo una
llave primaria, se hace necesario realizar tal acción precisamente para
mantener unicidad entre tuplas.
Para la definición de esquemas en
SQL, se puede utilizar la sentencia create table r (…), dentro del paréntesis
se tendrían las restricciones y atributos que formarían el esquema r, las
llaves primarias las cuales poseen su atributo no nulo y único, esta llave hace
a cada tupla única; la restricción check, la cual especifica un predicado el
cual cada tupla de r deberá respetar, en caso de fallar la condición check SQL
notificara el error, recuerde que null, es un valor valido para todo dominio de
SQL salvo aquel que este declarado como not null; la especificación unique,
indica que el atributo o atributos que lo forman son claves candidatas y se
tomara en cuenta para verificar la unicidad de la tupla.
Para gestionar esquemas se tienen
las siguientes sentencias: drop table r, la cual elimina todo esquema r tiene
una repercusión drástica esta última sentencia, la sentencia delete from r, la
cual conserva la relación pero elimina todas las tuplas, pero no se podrán
insertar nuevas tuplas a menos que se ejecute de nuevo create table; con alter
table r add A D, donde A es atributo y D dominio agrega nuevos campos a la
relación; alter table r drop A, elimina el campo descrito por A.
SQL y consultas con el LMD
La estructura básica de una
expresión SQL con el lenguaje de manipulación de datos o LMD consiste en tres
clausulas principales: select (Corresponde a la operación
de proyección del algebra relacional), from (Corresponde a la operación del
producto cartesiano) y where (Corresponde al predicado
selección del algebra relacional).
Una consulta típica en SQL tiene
la forma: select a1…an from r1…rn where Cada a representa un
atributo, cada r representa una relación y P es el predicado, Si se omite la
cláusula where el predicado P es cierto.
Los lenguajes formales de
consulta están basados en la noción matemática de que una relación es un
conjunto, así nunca aparecen tuplas duplicadas en la relaciones, en aquellos
casos donde se requiera forzar la eliminación de duplicados se insertara la
palabra clave distinct después de select.
De igual forma se usa la palabra
clave all para especificar que no se eliminan los duplicados, el
símbolo “*” se puede usar para denotar todos los atributos, la cláusula
select
puede contener también expresiones aritméticas que contengan los operadores, +,-,*
operando sobre constantes o sobre tuplas, SQL también proporciona tipos de
datos especiales, tales como varias formas del tipo fecha y funciones
aritméticas destinadas a operar con esos tipos de datos.
La cláusula where usa las conectivas
lógicas and, or y not en lugar de símbolos
matemáticos, pero permite operadores de comparación SQL para comparar cadenas y
expresiones aritméticas así como tipos especiales tales como el tipo fecha.
Además SQL incluye un operador de
comparación between que especifica que un valor sea menor o igual que un
valor y mayor o igual que otro valor, de forma análoga se puede usar el
operador de comparación not between.
La cláusula from define por sí misma
un producto cartesiano de la relaciones que aparecen en la cláusula, también
SQL proporciona un mecanismo para renombrar tanto relaciones como atributos.
Para ello utiliza la cláusula as de la siguiente forma select
nombre as n from directorio.
La cláusula as es útil en variables
tupla, este tipo de variables se definen en la cláusula from mediante el uso de as,
las variables tupla son de gran utilidad para comparar dos tuplas de una misma
relación.
SQL especifica cadenas entre
comillas simples como ‘hola’, la operación más usada sobre
cadenas es el encaje u operador like para la descripción de
patrones, el carácter “%” encaja con cualquier subcadena,
el subrayado encaja con cualquier carácter, SQL también permite buscar
discordancias en lugar de concordancias usando el operador not like.
SQL ofrece al usuario cierto
control sobre el orden en el cual se presentan las tuplas de una relación, la cláusula
order
by hace que las tuplas resultantes de una consulta se presenten en
cierto orden.
SQL define las tuplas que están en el resultado de una
consulta, además del número de copias de cada una de esas tuplas que aparecen
en el resultado, la semántica de duplicados de una consulta SQL, se puede
definir utilizando versiones de los operadores relaciones para multiconjuntos.