Diseño de una Base de Datos
En general, el objetivo del diseño de una base de datos relacional es generar un conjunto de esquemas de relaciones que permitan almacenar la información con un mínimo de redundancia, pero que a la vez faciliten la recuperación de la información. Una de las técnicas para lograrlo consiste en diseñar esquemas que tengan una forma normal adecuada. Para determinar si un esquema de relaciones tiene una de las formas normales se requiere mayor información sobre la empresa del "mundo real" que se intenta modelar con la base de datos. La información adicional la proporciona una serie de limitantes que se denominan dependencias de los datos.
Los diseñadores entrevistan a los futuros usuarios de la base de datos para recoger y documentar sus necesidades de información. En paralelo, conviene definir los requerimientos funcionales que consisten en operaciones (transacciones) que se aplicarán a la base de datos, e incluyen la obtención de datos y la actualización.
Una vez recogidos todos los requerimientos, el siguiente paso es crear un esquema conceptual para la base de datos mediante un modelo de datos conceptual de alto nivel.
El esquema conceptual contiene una descripción detallada de los requerimientos de información de los usuarios, y contiene descripciones de los tipos de datos, relaciones entre ellos y restricciones
Nosotros utilizaremos para el diseño de esquemas conceptuales el modelo E-R (entidad‑relación), que describe los datos cono entidades, vínculos (relaciones) y atributos.
El siguiente paso en el proceso de diseño consiste en implementar de hecho la base de datos con un S.G.B.D. comercial, transformando el modelo conceptual al modelo de datos empleados por el S.G.B.D. (jerárquico, red o relacional).
En nuestro módulo haremos la implementación con un S.G.B.D. relacional, por ser el modelo más utilizado por las empresas en la actualidad
En este paso se especifican las estructuras de almacenamiento internas y la organización de los archivos de la base de datos.
SQL
¿Qué es SQL?
SQL es un lenguaje dedicado a la gestion de bases de datos,con el podemos realizar distintas tareas con algunas instrucciones como crear tablas, consultar datos,insertarlos, actualizar y eliminar.
¿En qué partes de divide el lenguaje mencionado?
Este lenguaje como tal se divide en lenguaje de definición de datos y lenguaje de manipulación de datos.
¿Es SQL también un lenguaje de programación?
No, es mas que nada un lenguaje declarativo.
LENGUAJE DE DEFINICIÓN DE DATOS
El LDD de SQL permite la especificación no sólo de un conjunto de relaciones, sino también de alguna información relativa a esas relaciones, incluyendo:
• El esquema de cada relación
• El dominio de valores asociado a cada atributo
• Las restricciones de integridad
• El conjunto de índices que se deben mantener porcada relación
• Información de seguridad y autorización para cada relación
• La estructura de almacenamiento físico de cada relación en disco.
Tipos de dominios en SQL
Char
Varchar
Int
Smallint
Numeric
Real, double precision
Float
Date
Time
Timestamp
Definición de esquemas en SQL
· create table r (A1D1, A2D2, … AnDn,Arestricción-integridad1S.…A restricción-integridadkS)
· drop table r
· alter table r add A D
· alter table r drop A
Consultas
Una base de datos relacional consiste en un conjunto de relaciones, a cada una de las cuales se le asigna un nombre único.
La estructura básica de una expresión SQL consiste en tres cláusulas: select, from y where.
• La cláusula select corresponde a la operación proyección del álgebra relacional. Se usa para listar los atributos deseados del resultado de una consulta.
• La cláusula from corresponde a la operación producto cartesiano del álgebra relacional. Lista las relaciones que deben ser analizadas en la evaluación de la expresión.
• La cláusula where corresponde al predicado selección del álgebra relacional. Es un predicado que engloba a los atributos de las relaciones que aparecen en la cláusula from.
La cláusula select
Es importante resaltar que SQL permite usar la palabra clave all para especificar explícitamente que no se eliminan los duplicados:
Select all nombre-sucursal
From préstamo
La cláusula where
Permite disponer de que campos específicos que queremos conocer usando operadores lógicos.
Select número-préstamo
From préstamo
Where nombre-sucursal = ‘Navacerrada’ and importe > 1200
Los operandos de las conectivas lógicas pueden ser expresiones que contengan los operadores de comparación <, <=, >, >=, = y <>. SQL permite usar los operadores de comparación para comparar cadenas y expresiones aritméticas, así como tipos especiales, tales como el tipo fecha.
Se puede usar la comparación between para escribir:
Select número-préstamo
From préstamo
Where importe between 90000 and 100000
En lugar de
Select número-préstamo
From préstamo
Where importe <= 100000 and importe >= 90000
La cláusula from
La cláusula from define por sí misma un producto cartesiano de las relaciones que aparecen en la cláusula.
Select nombre-cliente, prestatario. Número-préstamo, importe
From prestatario, préstamo
Where prestatario. Número-préstamo = préstamo. Número-préstamo
La operación renombramiento
SQL proporciona un mecanismo para renombrar tanto Relaciones como atributos. Para ello utiliza la cláusula as, que tiene la forma siguiente:
nombre-antiguo as nombre-nuevo
La cláusula as puede aparecer tanto en select como en from.
Variables tupla
Las variables tupla se definen en la cláusula from mediante el uso de la cláusula as.
Select nombre-cliente, T.número-préstamo, S.importe
From prestatario as T, préstamo as S
Where T.número-préstamo = S.número-préstamo
Operaciones sobre cadenas
Tanto por ciento (%): El carácter % encaja con cualquier subcadena.
• Subrayado (_): El carácter _ encaja con cualquier carácter.
Orden en la presentación de las tuplas
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 un cierto orden.