ESCUELA DE INGENIERIA EN COMPUTACION
TECNICO EN INGENIERIA DE SISTEMAS INFORMATICOS
DISEÑO DE BASES DE DATOS
CLASE N° 6
TEMA 1: GESTOR DE BASE DE DATOS
1.1 ARQUITECTURA DEL GESTOR DE BASE DE DATOS
Un sistema de gestión de base de datos (SGBD) es una colección de programas que
permiten a los usuarios crear y mantener una base de datos. Una característica
fundamental del SGDB es que proporciona cierto nivel de abstracción de los datos,
ocultando así detalles de almacenamiento que para el usuario final no suele ser
necesario conocer. Hay tres características importantes en el enfoque de bases de
datos, una de ellas es que separa los programas de los datos y las operaciones, la
segunda es el soporte de múltiples vistas de usuario y la tercera la utilización de un
catalogo para almacenar la descripción (esquema) de la base de datos.
En ocasiones se habla de una arquitectura en esquemas. Un esquema interno,
conceptual y otro externo. El interno describe la estructura física de almacenamiento
de la base de datos. El conceptual oculta detalles de las estructuras físicas de
almacenamiento y concentra su atención en las entidades, tipos de datos, relaciones
y restricciones. En el esquema externo o de vistas describe la base de datos para los
grupos de usuarios. No todos los SGBD separan los tres niveles, algunos de ellos se
incluyen los esquemas dentro de otros pero si son soportados. El SGBD permite
realizar una transformación o correspondencia de una solicitud para poder expresarla
en términos de los esquemas sobre la base de datos almacenada.
Una vez se ha terminado el diseño de la base de datos y se ha elegido el gestor para
implementarla, el primer paso es crear el esquema conceptual e interno de la base
de datos, esto puede lograrse mediante el lenguaje de definición de datos (DDL),
cuyas sentencias serán procesadas por el compilador DDL para identificar todas las
descripciones de la base de datos. Una vez se hayan definido los esquemas de la
base de datos (base de datos, tablas, campos, tipo de datos, relaciones, etc.) se
requerirá un mecanismo para insertar y manipular la información. El SGBD ofrece
estas operaciones de manipulación mediante un lenguaje de manipulación de datos
(DML).
Normalmente se pueden clasificar los SGBD mediante el criterio modelos de datos en
que se basan. Los dos tipos de modelos de datos actuales son el modelo de datos
relacional y el modelo de datos orientado a objetos. Además estas han evolucionado
en una nueva clase denominada SGDB objeto-relacionales.
Algunas ventajas relevantes de utilizar un SGBD son el control de redundancia de
datos, el control de restricciones de acceso a usuarios, almacenamiento persistente
de estructuras y objetos de base de datos, múltiples interfaces de usuario, integridad
referencial, seguridad y recuperación.
INVESTIGACIÓN INDIVIDUAL:
- Investigar sobre las versiones existentes hasta la fecha del
SGBD SQL SERVER y sus principales características.
- Instalar y configurar en su computadora la versión que el
profesor le indique del SGBD SQL SERVER.
- Investigue cuáles son los elementos que conforman el código
SQL.
1.2 CARACTERISTICAS DE LAS BASES DE DATOS
Una base de datos es una colección de datos relacionados entre sí. Implícitamente
en este concepto se pueden notar propiedades muy importantes de las bases de
datos, por ejemplo que la base de datos representa aspectos del mundo real, es una
colección coherente de datos con significados inherentes y sus datos están ahí por
un propósito específico. Las bases de datos pueden ser de cualquier tamaño y
complejidad además de poder crearse y mantenerse de forma manual o
informatizada.
La definición de una base de datos consiste en especificar los tipos de datos,
estructuras y restricciones para los datos que se almacenaran. La manipulación de
los datos contenidos en la base de datos se realiza mediante funciones de
recuperación y actualización de datos. Un sistema de base de datos es el conjunto
formado por la base de datos más el SGBD.
En las bases de datos relacionales, la información se almacena en tablas, que están
compuestas por filas y columnas que comúnmente se conocen como registros y
campos. A su vez, las tablas pueden estar relacionadas con otras, de ahí que sean
relacionales. Estas relaciones se establecen según la lógica del negocio, o sea de las
necesidades con respecto a los datos que se están almacenando.
EJEMPLO: Suponga que le asignan la tarea de crear el diseño de una
base de datos para una universidad, lo primero es pensar en la estructura
que tendrá la base de datos y ubicar unos cuantos datos de ejemplo
dentro de ella. Además debemos organizarla en nuestra mente tanto en
cuanto a ficheros, tablas, registros, campos, tipos de datos, etc. Podemos
definir la base de datos como UNIVERSIDAD y las tablas en las que se
almacenaran información tales como ALUMNOS, MATERIAS, SECCION,
EXPEDIENTE. Por ejemplo la tabla ALUMNO podría tener la siguiente
estructura:
ALUMNOS Codigo_alumno Nombre Dirección Edad
MG001 Julia Martínez García 19
HP001 Fernando Hernández 18
José Padilla
1.3 ESTANDAR SQL
El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos
normalizado, utilizado por los principales gestores de bases de datos. SQL se utiliza
para crear objetos de consulta, con el fin de obtener o manipular datos.
Un sistema de bases de datos proporciona un lenguaje de definición de datos para
especificar el esquema de la base de datos y un lenguaje de manipulación de datos
para expresar las consultas a la base de datos y las modificaciones. En la práctica,
los lenguajes de definición y manipulación de datos no son dos lenguajes separados;
en su lugar simplemente forman parte de un único lenguaje de bases de datos, tal
como SQL, ampliamente usado.
El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones.
Estos elementos se combinan en las instrucciones para crear, actualizar y manipular
las bases de datos.
A continuación se resumen mejor los dos tipos de sentencias de comandos SQL:
· Los comandos DDL permiten crear y definir nuevas bases de datos, campos e
índices.
· Los comandos DML permiten generar consultas para ordenar, filtrar y extraer
datos de la base de datos.
MINI CONTROL DE LECTURA
Realice una investigación sobre los siguientes conceptos del gestor de base de
datos SQL SERVER y traslade el número a la respuesta correcta.
1- Es el corazón de SQL Server 2005 y proporciona un ambiente de alto
Analysis Services
rendimiento, escalable, seguro para almacenar y recuperar datos
2- Proporciona la base de una solución business intelligence. CLR
3- Un motor para importar y exportar datos soluciones y transformaciones
Replicación
de datos mientras que se transfieren.
4- Un framework para las soluciones en las cuales se envían a los
Motor de Base de
suscriptores las notificaciones cuando ocurren los acontecimientos
datos relacional
específicos.
5- Se utiliza para extraer datos desde SQL Server y generar reportes. FullText Search
6- Un mecanismo confiable de comunicación transaccional basada en Integration
mensajes entre los servicios de software. Services
7- Incluido adentro de SQL Server, permitiendo poner soluciones de base
de datos en ejecución usando el código manejado escrito en .NET por Service Broker
ejemplo Microsoft Visual C# .NET o Microsoft Visual Basic .NET.
8- Permite a programas de cliente conectarse con HTTP endpoints dentro Notification
de SQL Server sin requerir Internet Information Services (IIS). Services
9- Un sistema de tecnologías para el copiado de datos y distribución de
Native HTTP
base de datos a partir de una base de datos o servidor a otro y
Support
sincronizando entre las bases de datos para asegurar consistencia.
10- Permite la indexación rápida y flexible basada en
Reporting
keyword queries de texto sobre datos almacenados en una
Services
base de datos en SQL Server.
TEMA 2: LENGUAJE DE DEFINICIÓN DE DATOS (DDL)
2.1 MANIPULACIÓN DE BASES DE DATOS
Las instrucciones DDL se utilizan para crear la estructura de la base de datos o sea
las tablas y los mecanismos de acceso a estas. Este lenguaje de definición permite
especificar crear y destruir objetos de la base de datos tales como, tablas, vistas e
índices además permite otras características propias de bases de datos como la
definición de relaciones, tipos de datos, etc. A continuación se examinaran algunas
de estas características que permiten definir una base de datos con una estructura
adecuada e íntegra para almacenar los datos.
2.1.1 INTEGRIDAD DE ENTIDADES
La clave principal de una tabla debe contener un valor univoco y no nulo en cada fila.
Por ejemplo la clave para una tabla Alumno tiene un valor unívoco para el número
de Carnet del alumno, que identifica de forma distintiva a cada alumno representado
por una fila o tupla. Según el estándar las restricciones de integridad de entidades
se presentan mediante la cláusula PRIMARY KEY en las instrucciones CREATE y ALTER
TABLE.
Esta cláusula PRIMARY KEY debe especificarse únicamente una vez por cada tabla.
Pero sigue siendo posible garantizar la unicidad para cualesquiera llaves alternativas
que tenga la tabla utilizando la palabra clave UNIQUE. SQL rechazará cualquier
intento de efectuar un INSERT o UPDATE donde se intente crear un valor duplicado
dentro de las llaves.
2.1.2 INTEGRIDAD REFERENCIAL
La integridad referencial quiere decir que, si una clave externa de una tabla hija
contiene un valor, dicho valor debe hacer referencia a una fila existente y valida
dentro de la tabla padre. La definición de claves externas se hace mediante la cláusula
FOREIGN KEY. Cuando se intente borrar o actualizar un valor de clave de la tabla
padre que tenga una o mas filas correspondientes en la tabla hija depende de la
acción referencial especificada que soporta SQL para que esto ocurra: CASCADE, SET
NULL, SET DEFAULT, NO ACTION.
2.1.3 SEGURIDAD EN LA BASE DE DATOS
Los datos guardados en la base de datos deben estar protegidos contra los accesos
no autorizados, de la destrucción o alteración malintencionadas además de la
introducción accidental de inconsistencias que evitan las restricciones de integridad.
Entre las formas de acceso malintencionado se encuentran:
• La lectura no autorizada de los datos (robo de información)
• La modificación no autorizada de los datos
• La destrucción no autorizada de los datos
La seguridad de las bases de datos se refiere a la protección frente a accesos
malintencionados.
Para proteger la base de datos hay que adoptar medidas de seguridad en varios
niveles:
Sistema de bases de datos.
Sistema operativo.
Red.
Físico.
Humano
Los usuarios pueden tener varios tipos de autorización para diferentes partes de la
base de datos. Entre ellas están las siguientes:
• La autorización de lectura.
• La autorización de inserción
• La autorización de actualización.
• La autorización de borrado.
CONCESIÓN DE PRIVILEGIOS
El usuario al que se le ha concedido alguna forma de autorización puede ser
autorizado a transmitir esa autorización a otros usuarios. El lenguaje SQL ofrece un
mecanismo bastante potente para la definición de autorizaciones.
El lenguaje de definición de datos de SQL incluye órdenes para conceder y retirar
privilegios. La instrucción grant se utiliza para conferir autorizaciones, la sintaxis
sería:
grant <privilegios> on <nombre de tabla> to <lista de usuarios >
La norma SQL incluye los privilegios delete, insert, select y update. A
continuación se muestra una consulta como ejemplo práctico:
grant select on Alumnos to secretaria
Para retirar una autorización se utiliza la instrucción revoke. Adopta una forma casi
idéntica a la de grant, la sintaxis sería:
revoke <privilegios> on <nombre de tabla> from <lista de
usuarios>
Como consulta tendríamos:
revoke select on Alumnos from secretaria
2.1.4 PROCESAMIENTO DE TRANSACCIONES DE LA BASE DE DATOS
El término transacción hace referencia a un conjunto de operaciones que forman una
única unidad lógica de trabajo. Por ejemplo, la transferencia de dinero de una cuenta
a otra es una transacción que consta de dos actualizaciones, una para cada cuenta.
Resulta importante que, o bien se ejecuten completamente todas las acciones de una
transacción, o bien, en caso de fallo, se deshagan los efectos parciales de la
transacción. Esta propiedad se denomina atomicidad. Además, una vez ejecutada con
éxito una transacción, sus efectos deben persistir en la base de datos: un fallo en el
sistema no debe tener como consecuencia que la base de datos se olvide de una
transacción que haya completado con éxito. Esta propiedad se denomina durabilidad.
En los sistemas de bases de datos en los que se ejecutan de manera concurrente
varias transacciones, si no se controlan las actualizaciones de los datos compartidos
existe la posibilidad de que las transacciones vean estados intermedios inconsistentes
creados por las actualizaciones de otras transacciones.
Esta situación puede dar lugar a actualizaciones erróneas de los datos almacenados
en la base de datos. Por tanto, los sistemas de bases de datos deben proporcionar
los mecanismos para aislar las transacciones de otras transacciones que se ejecuten
de manera concurrente. Esta propiedad se denomina aislamiento.
La transacción consiste en todas las operaciones que se ejecutan entre inicio
transacción y el fin transacción.
Para asegurar la integridad de los datos se necesita que el sistema de base de datos
mantenga las siguientes propiedades de las transacciones:
• Atomicidad. O todas las operaciones de la transacción se realizan adecuadamente
en la base de datos o ninguna de ellas.
• Consistencia. La ejecución aislada de la transacción (es decir, sin otra transacción
que se ejecute concurrentemente) conserva la consistencia de la base de datos.
• Aislamiento. Aunque se ejecuten varias transacciones concurrentemente, el
sistema garantiza que para cada par de transacciones Ti y Tj, se cumple que para los
efectos de Ti, o bien Tj ha terminado su ejecución antes de que comience T1, o bien
que T2 ha comenzado su ejecución después de que T1 termine. De este modo, cada
transacción ignora al resto de las transacciones que se ejecuten concurrentemente
en el sistema.
• Durabilidad. Tras la finalización con éxito de una transacción, los cambios
realizados en la base de datos permanecen, incluso si hay fallos en el sistema.
En la norma SQL se especifica el comienzo de una transacción explícitamente.
Las transacciones se terminan con una de las instrucciones SQL siguientes:
• Commit work compromete la transacción actual y comienza una nueva.
• Rollback work provoca que la transacción actual aborte.
2.1.5 BLOQUEO (LOCKING)
Cuando se ejecutan varias transacciones concurrentemente en la base de datos,
puede que deje de conservarse la propiedad de aislamiento. Es necesario que el
sistema controle la interacción entre las transacciones concurrentes; dicho control se
lleva a cabo a través de uno de los muchos mecanismos existentes llamado esquemas
de control de concurrencia.
Por ejemplo, imaginemos que estamos actualizando una "factura" de estado
"pendiente" a estado "pagado", durante el tiempo que dura la transacción (antes de
hacer COMMIT o ROLLBACK), si otro usuario quiere ver el estado de la "factura" ...
¿qué estado se mostrará? Los datos están cambiando. Si devolvemos "pendiente" no
sería correcto, ya que el estado ha cambiado a "pagado", pero si devolvemos
"pagado" tampoco es correcto, ya que la transacción podría hacer ROLLBACK y
abríamos efectuado una lectura fantasma. SQL Server bloquea la fila (en el mejor de
los casos) e impide el acceso a los datos afectados por la transacción, como
consecuencia el resto de usuarios concurrentes se quedan "bloqueados", sin
posibilidad siquiera de leer los datos. Este es solo uno de los tantos escenarios en
los que el "bloqueo" hace acto de presencia.
Existen muchos modos mediante los cuales se puede bloquear un elemento de datos.
En este apartado se centra la atención en dos de dichos modos:
Compartido
Exclusivo
INVESTIGACIÓN INDIVIDUAL:
- Investigar los estados en que puede encontrarse una transacción.
- ISOLATION LEVEL en el manejo de bloqueos.
Para qué sirve el
- Para qué sirve el nivel SNAPSHOT de aislamiento.
2.1.6 CLÁUSULA CREATE
CREACIÓN DE BASES DE DATOS
El proceso de creación de bases de datos difiere significativamente de unos productos
a otros. Una base de datos es una colección nominada de objetos de base de datos
que están relacionados entre si de alguna manera, estos objetos pueden ser tablas,
vistas, dominios, etc. Al momento de crear una base de datos se puede definir su
contenido y estructura, espacio de almacenamiento, permisos de acceso, usuarios
con que cuenta y otra serie de reglas adicionales.
La sintaxis básica para crear una nueva base de datos seria:
CREATE DATABASE nombre-base-de-datos
Se debe tomar muy en cuenta que el nombre de la base de datos debe ser un nombre
lógico y aceptable para el gestor de base de datos.
CREACIÓN DE TABLAS
Una vez que se tiene la base de datos creada, y nos encontramos conectados a ella,
lo siguiente es crear las tablas que almacenarán los datos, por lo cual será necesario
que se proceda a definir 1os atributos de cada una de dichas columnas o atributos.
Además se deberá al mismo tiempo establecer las restricciones para cada una de los
atributos, así como la creación de llaves primarias.
La sintaxis general para la definición de una nueva tabla en una base de datos es la
siguiente:
CREATE TABLE nombre-tabla
(nombre-atributo1 tipo opciones,
nombre-atributo2 tipo opciones,
)
La instrucción CREATE TABLE incorpora facilidades para definir restricciones de
integridad referencial y de otros tipos. Pueden existir parámetros adicionales pero lo
mas importante es el nombre que deseamos dar a la tabla y la lista con la definición
de columnas o atributos, con la que cada uno de estos tendrá un nombre, un tipo
que determinara la clase de información que podrá contener y otras opciones que se
consideran a veces como adicionales.
Algunos tipos de datos suelen ser específicos para bases de datos, pero también
suelen ser un estándar entre lenguajes de administración de bases de datos y de
programación, por ejemplo integer, char, float, entre otros.
Tras el tipo de de dato de cada columna, y de forma opcional, pueden aplicarse
restricciones y definir claves. Algunas opciones posibles son NOT NULL, UNIQUE,
PRIMARY KEY, FOREIGN KEY.
EJEMPLO:
En el siguiente ejemplo se ha definido una base de datos nueva llamada
Librería, mediante la palabra reservada USE especificamos directamente
la base de datos que estará activa y sobre la cual se ejecutaran las
demás consultas. Luego se procedió a ejecutar la instrucción CREATE
TABLE en la que se han definido sus atributos correspondientes, sus
tipos y su llave primaria. Además se ha especificado que uno de los
atributos no podrá contener valores nulos.
CREATE DATABASE Libreria
USE Libreria
CREATE TABLE Libros
(IDLibro INTEGER PRIMARY KEY,
ISBN VARCHAR(13) UNIQUE,
Titulo VARCHAR(30) NOT NULL,
Precio INTEGER NOT NULL,
NoEdicion VARCHAR(10),
FechaEdicion VARCHAR(10),
Comentarios VARCHAR(50)
)
Además se pueden especificar algunas restricciones de las llaves foráneas mediante
las sentencias:
CONSTRAINT FK_Libros_Categoria FOREIGN KEY(IDCategoria)
REFERENCES Categorias(IDCategoria)
Pero recuerde que para esto ya se deben contar con las estructuras de las
tablas a relacionar. Por lo que se recomienda la construcción de todas las
tablas.
INVESTIGACIÓN INDIVIDUAL:
1. Investigar como crear y administrar usuarios en SQL Server.
2. Investigar que son los permisos y como asignarle estos a una base de datos.
3. Investigar sobre las técnicas de cifrado y autenticación para una base de
datos en Sql Server.
4. Investigar que es un Schema y cómo administrarlo en SQL Server.
5. Investigar todos los tipos de datos soportados por SQL Server y detallarlos
en una tabla con su descripción correspondiente.
6. Investigar para que sirve la cláusula CONSTRAINT
7. Investigar para qué sirven las restricciones UNIQUE, CASCADE, SET NULL,
SET DEFAULT, NO ACTION, RESTRICT en la integridad referencial. Traer
sentencias de ejemplo para presentarlas en clase.