You are on page 1of 13

GESTIN DE BASES DE DATOS

UNIDAD 4:

DISEO FSICO
1. INTRODUCCIN
El diseo de una Base de Datos se descompone bsicamente en 3 etapas: Diseo Conceptual: Modelo Entidad/Relacin. Diseo Lgico: Modelo Relacional. Diseo Fsico. Mientras que en el diseo lgico se especifica qu se guarda, en el diseo fsico se especifica cmo se guarda. El diseo fsico es una descripcin de la implementacin de la Base de Datos en memoria secundaria. Describe las relaciones y las estructuras de almacenamiento y mtodos de acceso que se utilizaran para acceder a los datos de modo eficiente. El diseo de las relaciones slo se puede realizar cuando el diseador conoce perfectamente toda la funcionalidad que presenta el Sistema Gestor de Base de Datos que va a utilizar. El primer paso consiste en traducir el esquema lgico de modo que pueda ser fcilmente implementado por el Sistema Gestor de Base de Datos concreto. A continuacin, se escogen las organizaciones de los ficheros ms apropiadas para almacenar las relaciones y los mtodos de acceso, basndose en el anlisis de las transacciones que se van a ejecutar sobre la Base de Datos. Se puede considerar la introduccin de redundancias controladas (Desnormalizacin) para mejorar las prestaciones. La seguridad de la base de datos es fundamental, por lo que el siguiente paso consiste en disear las medidas de seguridad necesarias mediante la creacin de vistas (subconjunto de datos) y el establecimiento de permisos para los usuarios. El ltimo paso del sistema fsico consiste en monitorizar y afinar el sistema para obtener las mejores prestaciones y cambios que se puedan producir en los requisitos del sistema.

2. HISTORIA DEL LENGUAJE SQL


Codd, cuando propuso el modelo relacional, en su libro: "Un modelo de datos relacional para grandes bancos de datos compartidos", sent las bases de un lenguaje algebraico denominado SQUARE para la manipulacin de los datos. Este lenguaje fue mejorndose y amplindose, hasta que se denomin posteriormente SEQUEL y, por ltimo, en 1976, SQL (debido al sonido de la pronunciacin del nombre primitivo). Durante la dcada de los setenta tanto el modelo relacional como el lenguaje propuesto por Codd estuvieron siendo validados, perodo en el cual una serie de firmas empezaron a comercializar productos basados en los mismos. No fue hasta los primeros aos de la dcada de los ochenta cuando IBM (para quien trabajaba Codd) comercializ su primer producto relacional, el SQL/DS y el DB2, ms adelante. En esta dcada se publicaron los primeros estndares relacionales. En 1979 Oracle presenta la primera implementacin comercial del lenguaje. Poco despus se converta en un estndar en el mundo de las bases de datos avalado por los organismos ISO y ANSI. En el ao 1986 se toma como lenguaje estndar por ANSI de los SGBD relacionales. Un ao despus SQL se convierte en un estndar mundial como lenguaje de bases de datos relacionales.
Mercedes Garrido Lara. Curso 2012-13

GESTIN DE BASES DE DATOS En 1989 aparece el estndar SQL89 o SQL1. En 1992 aparece la nueva versin estndar de SQL (a da de hoy sigue siendo la ms conocida) llamada SQL92. En 1999 se aprueba un nuevo SQL estndar que incorpora mejoras que incluyen triggers, procedimientos, funciones y otras caractersticas de las bases de datos objeto-relacionales; dicho estndar se conoce como SQL99. El ltimo estndar es el del ao 2008 (SQL2008). Hoy en da existe en el mercado un gran nmero de SGBD relacionales cuyo lenguaje de manipulacin de datos es el SQL con ms o menos mejoras introducidas particularmente por los fabricantes. SQL se ha convertido en un estndar gracias a las mejoras que ha experimentado en los ltimos aos que le han conferido una gran potencia y sencillez de uso y aprendizaje. Muchos lenguajes de programacin incluyen sentencias SQL como parte de su repertorio de instrucciones, como Visual Basic. SQL es un lenguaje declarativo en el cual se define el qu se desea hacer por encima del cmo hacerlo (que es la forma de trabajar de los lenguajes de programacin de aplicaciones como C o Java). Con este lenguaje se pretenda que las instrucciones se pudiesen escribir como si fueran rdenes humanas, es decir, utilizar un lenguaje lo ms natural posible, de ah que se le considere un lenguaje de cuarta generacin. Se trata de un lenguaje que intenta agrupar todas las funciones que se le pueden pedir a una base de datos por lo que es el lenguaje utilizado tanto por administradores como por programadores o incluso por usuarios avanzados.

3. COMPONENTES DE UN ENTORNO DE EJECUCIN DE SQL


Segn la normativa ANSI/ISO cuando se ejecuta SQL, existen los siguientes elementos a tener en cuenta: Un agente SQL: Es cualquier elemento que causa la ejecucin de instrucciones SQL que sern recibidas por un cliente SQL. Una implementacin: Se trata de un procesador software capaz de ejecutar las instrucciones pedidas por un cliente SQL. A su vez est compuesta por: Cliente: Es el software que est conectado al agente SQL y funciona como interfaz entre el agente SQL y el servidor SQL. Servidor (puede haber varios): Es el software encargado de manejar los datos pedidos por el cliente. Es el software que realmente realiza la instruccin devolviendo los datos al cliente.

4. MODOS DE EJECUCIN DE SQL


El lenguaje SQL se utiliza para interactuar con una base de datos de alguno de los siguientes modos: Ejecucin directa. SQL interactivo: Las instrucciones SQL se introducen a travs de un cliente que est directamente conectado al servidor SQL, por lo que las instrucciones se traducen directamente sin intermediarios. Es un modo de trabajo incmodo, pero permite tener acceso a todas las capacidades del lenguaje SQL. Ejecucin incrustada o embebida: Las instrucciones de SQL se colocan como parte del cdigo de otro lenguaje que se considera anfitrin (C, Java, Visual Basic, etc.) y se compila todo el cdigo junto.

Mercedes Garrido Lara. Curso 2012-13

GESTIN DE BASES DE DATOS Ejecucin a travs de clientes grficos: Se utiliza un software para conectar a la Base de Datos a travs de un cliente. Todas las acciones son realizadas de forma grfica, con lo cual el manejo y la interaccin es ms cmoda. Ejecucin dinmica: Se trata de SQL incrustado en mdulos especiales que pueden ser invocados una y otra vez desde distintas aplicaciones.

5. PROCESO DE LAS INSTRUCCIONES SQL


Una instruccin en SQL se procesa de la siguiente forma: 1. Se analiza la instruccin para comprobar que la sintaxis es correcta. 2. Si es correcta se valoran si los metadatos (datos acerca de los datos) de la instruccin son correctos. Esto se comprueba en el diccionario de datos. 3. Si es correcta se optimiza la instruccin con el fin de consumir los mnimos recursos posibles. 4. Se ejecuta la sentencia o instruccin y se muestra el resultado de la misma.

6. ELEMENTOS DEL LENGUAJE SQL


El lenguaje SQL (Structured Query Languaje Lenguaje Estructurado de Consulta) cuenta con multitud de construcciones, cuya finalidad es manipular los datos en algn sentido. 6.1 Componentes y derivados Las distintas sentencias de SQL pueden englobarse en tres grupos, que podramos decir que son los componentes de SQL. Estos son el DDL, el DML y el DCL. Los tres componentes son partes integrales de SQL y forman parte del lenguaje estndar. Tambin disponemos de derivados de SQL o dialectos basados en dicho lenguaje. En el caso concreto de SQL Server es el TransactSQL y en ORACLE, el PL/SQL. DDL (Data Definition Language - Lenguaje de Definicin de Datos): Con este lenguaje podemos crear bases de datos, definir tablas, crear ndices, vistas y procedimientos. Tambin puede ser usado para efectuar modificaciones sobre dichas entidades, por ejemplo: aadir una columna a una tabla. Las tres rdenes bsicas son: CREATE (crear), ALTER (modificar), DROP (eliminar). DML (Data Manipulation Language - Lenguaje de Manipulacin de Datos): Es sin duda el ms conocido y el ms utilizado. Su finalidad es actuar sobre la informacin contenida en la base de datos, por ejemplo: ver el contenido de una tabla. Las cuatro rdenes ms importantes son: SELECT (Seleccionar), INSERT (Insertar), DELETE (Eliminar) y UPDATE (Modificar). DCL (Data Control Language - Lenguaje de Control de Datos): Es la parte menos conocida del SQL siendo su finalidad controlar el acceso a los datos, otorgando y denegando privilegios sobre los objetos del sistema gestor de base de datos. Las sentencias ms caractersticas son: GRANT (Otorgar privilegios), REVOKE (Retirar privilegios), COMMIT y ROLLBACK (Confirmar y Rechazar operaciones asociadas a una transaccin). TRANSACT SQL (T-SQL): Es un dialecto o derivado de SQL con caractersticas especficas que en cierta manera, le permiten aprovechar las singularidades de SQL Server. Con este lenguaje es posible definir prcticamente cualquier tarea que deseemos efectuar sobre los datos.

Mercedes Garrido Lara. Curso 2012-13

GESTIN DE BASES DE DATOS 6.2 Cdigo SQL El cdigo SQL consta de los siguientes elementos: Comandos: Las distintas instrucciones que se pueden realizar desde SQL. Por ejemplo SELECT, comando que permite realizar consultas sobre los datos de la base de datos. Clusulas: Son palabras especiales que permiten modificar el funcionamiento de un comando (WHERE, ORDER BY, ...). Operadores: Permiten crear expresiones complejas. Pueden ser aritmticos (+, -, *, /, ...) lgicos (>, <, !=, <>, AND, OR,...). Funciones: Se emplean para conseguir valores complejos, por ejemplo SUM(), DATE(),... Literales: Son valores concretos para las consultas, como nmeros, textos, caracteres,... Ejemplos: 2, 12.34, 'Paseo de San Gregorio'. Metadatos: Se obtienen de la propia base de datos.

6.3 Normas de escritura Al escribir las instrucciones en SQL debemos tener en cuenta las siguientes consideraciones: En SQL no se distingue entre maysculas y minsculas. Las instrucciones finalizan con el signo de punto y coma. Cualquier instruccin SQL (SELECT, INSERT,...) puede ser escrito en varias lneas. Se pueden tabular las lneas para facilitar la lectura si fuera necesario. Los comentarios se indican con /* */ (varias lneas) y con -- (1 sola lnea).

6.4 Identificadores Todos los objetos que existen en una base de datos tienen que tener un nombre. Este nombre, conocido como identificador, sirve para localizar un objeto a lo largo de su vida. En algunas ocasiones, las partes de un objeto tambin pueden tener un nombre. Con la excepcin de ciertas restricciones, todos los objetos cuentan con un identificador que se le asigna en el momento de su creacin. Los identificadores (nombres de los objetos) deben cumplir las siguientes reglas: Como mximo pueden tener 128 caracteres. El primer carcter debe ser una letra. No puede ser una palabra reservada. No puede contener espacios ni caracteres especiales.

Los nombre de los objetos que no cumplan estas reglas debern quedar delimitados por comillas () o por corchetes []. Los objetos de la base de datos se nombran utilizando un esquema de nombres en cuatro partes:
<instancia>.<base de datos>.<esquema>.<objeto>

La instancia, la base de datos y el esquema son optativos. Si el nombre de la instancia no se especifica, el nombre del objeto tomar por defecto el nombre de la instancia a la que est conectado en ese momento. Si no se especifica el nombre de la base de datos, se utilizar la base de datos que est activa. Si no se especifica el nombre del esquema, se utilizar el esquema predeterminado.
Mercedes Garrido Lara. Curso 2012-13

GESTIN DE BASES DE DATOS 6.5 Esquemas Todos los objetos dentro de la bases de datos se crean dentro de un esquema. Si bien los esquemas se utilizan para agrupar objetos, tambin ofrecen una frontera de seguridad. La sintaxis genrica para crear un esquema es la siguiente:
CREATE SCHEMA nombre_esquema AUTHORIZATION nombre_propietario

6.6 Tipos de datos Una de las decisiones ms importantes es la eleccin del tipo de datos de cada uno de los elementos almacenados en la base de datos. La eleccin del tipo de datos adecuado va a determinar la calidad, el acceso y las caractersticas a la hora de manipular los datos, as como el tamao de almacenamiento. SQL Server 2008 tiene las siguientes categoras de tipos de datos: Datos numricos. Datos de caracteres. Datos de fechas. Datos binarios. Datos especiales. Los tipos de datos ms utilizados son: Nombre
tinyint smallint int decimal float real char varchar text smallmoney money smalldatetime datetime
15

Valores que puede contener


Nmeros enteros entre 0 y 255 Nmeros enteros entre 2 (-32.768) y 2
38 15 31

- 1 (32.767).
31

Nmeros enteros comprendidos entre -2 (-2.147.483.648) y 2


38

- 1 (2.147.483.647).

Nmeros comprendidos entre -10 -1 y 10 -1. Notacin decimal (p,s) siendo p el n total de dgitos y s el n de decimales. Ejemplo: decimal (8,3) permite almacenar valores entre -9999,999 y 99999,999 Nmeros en coma flotante comprendidos entre -1,79E + 308 y 1,79E + 308 Nmeros en coma flotante comprendidos entre -3,40E + 38 y 3,40E + 38 Secuencia de caracteres de longitud fija con una longitud mxima de 8.000 caracteres Secuencia de caracteres de longitud variable con un mximo de 8.000 caracteres Secuencia de caracteres de longitud variable con una longitud mxima de 2 (1.147.483.647) caracteres
31

- 1

Valores de moneda comprendidos entre -214.748,3648 y +214.748,3647, con una precisin de cuatro decimales Valores de moneda comprendidos entre -2 (-922.337.203.685.477,5808) y 2 (+922.337.203.685.477,5807), con una precisin de cuatro decimales
63 63

- 1

Fechas comprendidas entre el 1 de enero de 1900 y el 6 de junio de 2079, junto con la hora, con una precisin de un minuto Fechas comprendidas entre el 1 de enero de 1753 y el 31 de diciembre de 9999, junto con la hora.

Para ver todos los tipos de datos disponibles en SQL Server 2008 consultar el siguiente enlace: http://msdn.microsoft.com/es-es/library/ms187594(SQL.100).aspx
Mercedes Garrido Lara. Curso 2012-13

GESTIN DE BASES DE DATOS

7. DDL
Para poder manipular datos primero es necesario definir su estructura. Los comandos (rdenes) DDL (Data Definition Language) se utilizan para crear, modificar y borrar objetos dentro de la bases de datos de SQL Server. DDL incluye tres comandos bsicos: CREATE: Crea un objeto (Por ejemplo CREATE TABLE, CREATE DATABASE). ALTER: Modifica un objeto (Por ejemplo ALTER TABLE, ALTER INDEX). DROP: Elimina un objeto (Por ejemplo DROP TABLE, DROP VIEW). Es decir, cada uno de estos comandos ir seguido de unos de los siguientes identificados segn sea el objeto que se va a crearse, modificarse o eliminarse.

Identificador
DATABASE TABLE INDEX VIEW PROCEDURE TRIGGER 7.1 Propietario y creador de un objeto

Entidad
Base de datos Tabla ndice Vista Procedimiento almacenado Desencadenador

Todos los objetos de una base de datos son creados mediante una sentencia (instruccin) de SQL. Se denomina creador de un objeto al usuario que define su nombre mediante la sentencia CREATE adecuada. Este creador define el nombre, la estructura y las propiedades de ese objeto. Lo habitual es que el creador de un objeto sea tambin el propietario de este objeto. Se denomina propietario a la persona que tiene el derecho de destruir o modificar el esquema del objeto. El nombre del propietario se usa para formar el nombre completo del objeto. El propietario de un objeto, tiene adems la capacidad de permitir o prohibir que los dems usuarios accedan a sus objetos. Puede ejercer como ABD (Administrador de la base de datos) restringido a su dominio y otorgar permisos (mediante la el comando GRANT) al resto de usuarios del sistema. Existen algunos usuarios, como el ABD, que pueden crear un objeto en la base de datos, pero sin ser ellos mismos los propietarios. Al crearlo, ceden la propiedad del objeto a su futuro propietario. 7.2 Creacin de una base de datos La primera entidad que deberamos crear es la propia base de datos, para ello usaremos la sentencia CREATE DATABASE. El nico parmetro obligatorio es el nombre lgico de la base de datos, aunque opcionalmente pueden facilitarse muchos ms. Ejemplo: CREATE DATABASE Biblioteca Esta orden (instruccin o sentencia) creara una base de datos llamada Biblioteca usando parmetros por defecto para los nombres de los ficheros fsicos, su tamao y el resto de propiedades.
Mercedes Garrido Lara. Curso 2012-13

GESTIN DE BASES DE DATOS 7.3 Creacin de tablas Se utiliza la misma orden, CREATE para crear todas las tablas que forman la base de datos. Para crear una tabla deberamos conocer los tipos de datos que hay disponibles. Dos de los ms utilizados son smallint (entero) y varchar (secuencia de caracteres), en este caso hay que indicar su longitud mxima entre parntesis. Antes de crear una tabla hay que indicar la base de datos donde queremos crearla, de lo contrario se crear en la base de datos por defecto. Siempre el primer paso ser seleccionar la base de datos en la que va a efectuarse la operacin, para ello utilizaremos la instruccin: USE base de datos Ejemplo: USE asi1 Al definir la tabla debemos especificar el nombre de la tabla y los atributos que la forman y sus tipos. La sintaxis resumida es la siguiente: (Esta sintaxis se completar ms adelante) CREATE TABLE nombre de la tabla ( nombre del campo1 tipo de dato1, restricciones nombre del campo1 tipo de dato2, ... nombre del campo n tipo de dato n, [PRIMARY KEY (clave primaria),] [FOREIGN KEY (clave externa) REFERENCES tabla externa]); De manera adicional podemos especificar unas restricciones en la definicin: las caractersticas de almacenamiento, los valores iniciales y las restricciones con las que cuenta la tabla. Ejemplo: CREATE TABLE AUTORES ( DNI-Autor varchar(10), Nombre varchar(15), Apellidos varchar(25), Nacionalidad varchar(15), PRIMARY KEY (DNI-Autor));

CREATE TABLE LIBROS ( ISBN varchar(10), Ttulo varchar(30), Editorial varchar(15), Num-ejemplares smallint, DNI-Autor varchar (10), PRIMARY KEY (ISBN), FOREIGN KEY (DNI_Autor) REFERENCES AUTORES (DNI_Autor)); Observaciones: Cuando la clave primaria est formada por un solo atributo o campo se puede poner PRIMARY KEY al lado de ese atributo. Si por el contrario la clave primaria estuviera formada por dos o ms atributos, obligatoriamente PRIMARY KEY se tiene que poner al final, despus de la definicin de todos los atributos.

Mercedes Garrido Lara. Curso 2012-13

GESTIN DE BASES DE DATOS Como se ha indicado en un apartado anterior, una instruccin en SQL se puede escribir en una sola lnea o incluso todo en minscula, ya que SQL no distingue entre maysculas y minsculas. Cuando se hace referencia a una clave ajena no es obligatorio indicar el nombre del atributo que es clave principal en la tabla fornea, ya que por definicin esta tabla debe tener definida una clave primaria. Al crear las distintas tablas que forman una base de datos es importante el orden de creacin, primero se deben crear las tablas que no tiene claves forneas y despus las tablas que hacen referencia a estas tablas, de lo contrario dara un error.

Por ejemplo, las siguientes instrucciones son equivalentes: CREATE TABLE LIBROS ( ISBN varchar(10), Ttulo varchar(30), Editorial varchar(15), Num-ejemplares smallint, DNI-Autor varchar (10), PRIMARY KEY (ISBN), FOREIGN KEY (DNI_Autor) REFERENCES AUTORES (DNI_Autor)); CREATE TABLE LIBROS ( ISBN varchar(10) PRIMARY KEY, Ttulo varchar(30), Editorial varchar(15), Num-ejemplares smallint, DNI-Autor varchar (10), FOREIGN KEY (DNI_Autor) REFERENCES AUTORES (DNI_Autor)); CREATE TABLE LIBROS ( ISBN varchar(10), Ttulo varchar(30), Editorial varchar(15), Num-ejemplares smallint, DNI-Autor varchar (10), PRIMARY KEY (ISBN), FOREIGN KEY (DNI_Autor) REFERENCES AUTORES); CREATE TABLE LIBROS (ISBN varchar(10), Ttulo varchar(30), Editorial varchar(15),Num-ejemplares smallint,DNI-Autor varchar (10),PRIMARY KEY (ISBN),FOREIGN KEY (DNI_Autor) REFERENCES AUTORES (DNI_Autor)); create table libros (isbn varchar(10), ttulo varchar(30), editorial varchar(15),num-ejemplares smallint,dni-autor varchar (10),primary key (isbn),foreign key (dni_autor) references autores (dni_autor)); Restricciones de atributo Tambin son llamados modificadores de tipos. Estas restricciones se utilizan en SQL Server para definir elementos estructurales que vinculan a los datos y hacen obligatoria la consistencia. Las restricciones disponibles en SQL Server son: PRIMARY KEY, UNIQUE, CHECK, DEFAULT y FOREING KEY.
Mercedes Garrido Lara. Curso 2012-13

GESTIN DE BASES DE DATOS PRIMARY KEY: La clave primaria es una restriccin fundamental a la hora de disear correctamente una base de datos. Una clave primaria define un atributo (columna) o atributos que identifican de forma nica a cada fila dentro de la tabla. Si bien es posible aadir datos a la tabla (con el comando INSERT como veremos ms adelante) sin una clave primaria, resulta imposible modificar o borrar una nica fila a menos de pueda definirse de forma nica. Todas las tablas dentro de una base de datos deberan tener una clave primaria. Las claves primarias se pueden indicar en la creacin de la tabla o insertar posteriormente en una tabla ya existente. UNIQUE: se utiliza para definir aquel atributo o atributos que deben ser nicos en una tabla. Una restriccin de este tipo impedir duplicar los datos dentro de una columna. Si bien una clave primaria tambin define la singularidad de una o varias columnas, existen dos diferencias importantes entre UNIQUE y PRIMARY KEY: 1. Una tabla nicamente puede tener una clave primaria. 2. Una clave primaria no permite valores nulos. Se pueden crear mltiples restricciones UNIQUE dentro de una tabla. Si bien estas restricciones admiten valores nulos, nicamente podr tener una fila con un valor nulo en la tabla. Por ejemplo podemos poner una restriccin UNIQUE a un atributo telfono para evitar que dos personas tengan el mismo n de telfono. CREATE TABLE AGENDA ( dni varchar(10) PRIMARY KEY, nombre varchar(15), telfono varchar(9) UNIQUE); CHECK: permite restringir el rango de valores permitidos en una columna dentro de una tabla. Por ejemplo en un pedido no se permite que un cliente pida una cantidad negativa de productos o que los gastos de envo sean negativos. CREATE TABLE PEDIDO ( identificador varchar(10) PRIMARY KEY, fecha datetime importe decimal(5,2) CHECK (importe >0)); DEFAULT: se utiliza para especificar un valor por defecto a una columna. CREATE TABLE PROVEEDOR ( codpro varchar(5) PRIMARY KEY, nombre varchar(15), direccin varchar(30), provincia varchar(20) DEFAULT Ciudad Real); FOREING KEY: indica que atributo o atributos constituyen la clave ajena (externa o fornea) en una integridad referencial. CREATE TABLE EMPLEADO ( dni varchar(10) PRIMARY KEY, nombre varchar(30), codep varchar(10), FOREIGN KEY (codep) REFERENCES DEPARTAMENTO (codep)); (Nota: No confundir las restricciones de atributos, que pueden afectar a uno o varios atributos, con las restricciones de tabla, que afectan a las relaciones entre tablas)

Mercedes Garrido Lara. Curso 2012-13

GESTIN DE BASES DE DATOS Restricciones de integridad Una restriccin de integridad es una propiedad que debe cumplirse para mantener en la tabla algn criterio de diseo. Estas propiedades pueden el restringir el rango de posibles valores contenidos en un atributo o relacionar los valores de dos atributos. Por ejemplo si en una tabla se almacenan dos atributos: edad y fecha de nacimiento, es razonable pedir que estn en concordancia para no introducir inconsistencia en los datos. Esta relacin se establece como una relacin de integridad. En SQL las restricciones de integridad se denominan constraints, y existe una clusula para fijar una restriccin: la sentencia CONSTRAINT. Una restriccin puede afectar a una tabla entera o a una columna. Se llaman por tanto, restricciones de tabla o restricciones de columna. Las restricciones tienen un nombre para poder ser manipulada posteriormente. Para una tabla, la sintaxis es:
ALTER TABLE <nombre_tabla> ADD CONSTRAINT [nombre_restriccin] { {UNIQUE | PRIMARY KEY} (<nombre_columna>{,<nombre_columna>}*) | FOREING KEY (<nombre_columna>{,<nombre_columna>}*) REFERENCE <nombre_tabla> (<nombre_columna>{,<nombre_columna>}*) [ON DELETE CASCADE] | CHECK <condicin> } [DISABLE]

Estas sentencias producen el almacenamiento en el diccionario de datos del nombre de la restriccin, con su definicin. Sus parmetros son opcionales, y cada restriccin debe elegir una combinacin. Si se quieren fijar varias restricciones, es mejor usar varias sentencias CONSTRAINT. Para las restricciones que afectan a columnas, la sintaxis es:
[CONSTRAINT nombre_restriccin] { [NOT] NULL | {UNIQUE | PRIMARY KEY} | REFERENCE <nombre_tabla> [(<nombre_columna>)] | CHECK <condicin> } [DISABLE] NOTA: Notacin-Significado de los smbolos utilizados en la sintaxis Se usan los corchetes [] para indicar que su contenido es opcional, es decir puede ponerse o no en la sentencia. Se usan las llaves {} para marcar que su contenido se comporta como un bloque, y se le aplica la operacin a todo el bloque. Se usa el asterisco * para indicar que el bloque o el smbolo a que se le aplica no puede aparecer, aparecer una sola vez, o aparecer varias veces. Por ejemplo, es necesario definir un campo para una tabla, pero el n de campos que aparecen despus es indeterminado. Esto se expresa por la notacin <nombre_columna> {,<nombre_columna>}* : es decir, un campo y luego cero o ms campos, separados por una coma ,.

[ON DELETE CASCADE]

Mercedes Garrido Lara. Curso 2012-13

10

GESTIN DE BASES DE DATOS


La barra vertical | indica que se debe elegir entre los elementos separados por ella. Por ejemplo {A | B | C} indica que se tomar el smbolo A, o el B, o el C, pero slo uno. Sin embargo { A B|C} indica AB AC.

Si se especifica DISABLE, la restriccin se crea pero se no aplica. Existen tres parmetros en la clusula CONSTRAINT relacionados con la propiedad llamada integridad referencial. Cuando entre dos tablas se establece una relacin (como la que existe entre la tabla clientes y pedidos) las tuplas de una tabla se relacionan con las tuplas de la otra mediante ciertos campos clave en cada tabla. La tabla de la que porta parte la relacin (Ej. CLIENTES) se denomina tabla padre, y la otra tabla hija. Se llama clave ajena (foreing key) a la clave de la hija, y clave referenciada a la de la tabla hija. Esta ltima de be ser clave primaria. Una relacin puede mantener o no la integridad referencial. Lo hace si cumple dos condiciones: a) Toda tupla de la tabla hija est asociada con una tupla de la tabla padre. Es lgico que no exista un pedido sin un cliente que lo haya solicitado. b) Si una tupla de la tabla hija no cumple lo anterior, el valor que tienen en la columna de la clave ajena es nulo. La restriccin de integridad referencial debe establecerse en la tabla hija. Se usan los siguientes parmetros para fijarla: FOREING KEY REFERENCE ON DELETE CASCADE: cuando un registro principal es borrado se destruyen todos los registros secundarios asociados a ese registro principal. 7.4 Modificacin de una tabla Si se hace un buen diseo de la bases de datos, las modificaciones a la estructura de una base de datos deberan ser mnimas. Hay que tener en cuenta que este tipo de operaciones podra, en determinados casos, provocar prdida de informacin, algo no admisible para una base de datos en un entorno de explotacin. Para efectuar cambios en una tabla utilizamos la sentencia ALTER TABLE seguida del nombre de la tabla y las opciones correspondientes. Bsicamente podemos efectuar tres operaciones: aadir columnas, modificarlas o eliminarlas. Tambin puede utilizarse esta sentencia para modificar, eliminar o aadir opciones de una columna, como pueden ser los valores por defecto, las restricciones, etc.

Sintaxis
ALTER TABLE nombre_tabla ADD nombre_col tipo_col; ALTER TABLE nombre_tabla ALTER COLUMN nombre_col ALTER TABLE nombre_tabla DROP COLUMN nombre_col;

Ejemplo
ALTER TABLE LIBROS ADD num_ejempl smallint; ALTER TABLE LIBROS ALTER COLUMN autor varchar (25); ALTER TABLE LIBROS DROP COLUMN autor;

tipo_col;

Mercedes Garrido Lara. Curso 2012-13

11

GESTIN DE BASES DE DATOS 7.5 Insertar datos Una vez creadas las tablas tenemos que insertar los datos, ya que sin datos en las tablas no es posible efectuar operaciones de seleccin, actualizacin ni borrado. La orden a utilizar es INSERT, cuya sintaxis bsica es la siguiente: INSERT INTO nombre_tabla VALUES (valor, valor, ) La palabra INTO es opcional, podemos obviarla y poner directamente el nombre de la tabla detrs de la orden INSERT. Los valores irn entre parntesis y separados por comas, delimitndose entre comillas simples los que sean cadenas de caracteres. Ejemplo: INSERT INTO libros VALUES (1, Don Quijote de la Mancha); INSERT INTO libros VALUES (2, La Celestina); 7.6 Eliminacin de tablas Podemos eliminar una tabla, pero debemos contar con privilegios para ellos. La sintaxis es: DROP TABLE nombre_tabla; 7.7 Vistas Las vistas son una herramienta muy valiosa, ya que permiten definir subconjuntos de datos formados con una o varias tablas y/o vistas. La vista tiene la apariencia de una tabla, pero a diferencia de sta ocupan menos espacio, debido a que se almacena slo la definicin de la vista y no los datos que la forman, es una tabla lgica. El objeto de la vista es mostrar a los usuarios una visin parcial de los datos, de modo que podemos mostrar a los usuarios slo aquellos datos que sean de su inters. Esto constituye un elemento de seguridad importante. Adems una vista protege los datos frente a las miradas de otros usuarios Otro motivo para la utilizacin de vistas es la adaptacin del esquema de datos para un determinado usuario o aplicacin. Mediante las vistas, las aplicaciones se independizan de la estructura real de los datos. Las vistas se crean aplicando una consulta sobre la base de datos, pero a diferencia de una consulta, la vista queda almacenada, por los que puede ser reutilizada. La sintaxis bsica para crear vistas es: CREATE VIEW nombre_vista AS subconsulta [WITH CHECK OPTION]; Veamos un ejemplo: CREATE VIEW directorio AS SELECT nombre, direccion, poblacin FROM amigos; Las vistas tambin pueden ser eliminadas de la base de datos, utilizando una sintaxis similar. DROP VIEW nombre_vista; Como una vista est basada en una subconsulta, volveremos a las consultas en la UT 5, despus de ver las consultas.
Mercedes Garrido Lara. Curso 2012-13

12

GESTIN DE BASES DE DATOS 7.8 ndices Los ndices son un elemento que permiten acceder a la informacin de una tabla, mediante un determinado orden de forma rpida, aumentando el rendimiento de los accesos a la informacin. La creacin de un ndice se efecta mediante un comando en el que debemos indicar el nombre del ndice, as como tabla y columnas sobre las que se aplica dicho ndice. CREATE INDEX nombre_ndice ON nombre_tabla (columna); Veamos un ejemplo: CREATE INDEX ind_profes ON profesor (nrp); Como en el caso de las tablas y las vistas, los ndices tambin se pueden eliminar, para ello usamos la orden DROP con la siguiente sintaxis: DROP INDEX nombre_ndice;

Mercedes Garrido Lara. Curso 2012-13

13

You might also like