You are on page 1of 13

Universidad Nacional San Luis Gonzaga De Ica

Formando Profesionales de xito


FACULTAD DE INGENIERA DE SISTEMAS LABORATORIO 6

Creacin de Tablas e Integridad referencial en Transact SQL Server Docenteviiss1@gmail.com www.implementaciondebasededatos.wikispaces.com www.implementaciondebasededatos.blogpost.com

http://huamanpunlay.wordpress.com/2009/08/18/creacion-de-tablas-e-integridad-referencial-en-transact-sql-server/

Bueno ahora sabemos que ya creada nuestra base de datos, con los parmetros que consideremos necesarios viene la creacin de tablas y tenemos que designarles sus respectivos tipos de datos adems de hacer las relaciones, para esto tenemos dos maneras la forma grfica y mediante querys en Transact, en lo que es integridad referencial es importante que las tablas estn VACIAS, ya que si las tablas contienen datos tendramos problemas si alguno de estos registros insertados no cumplan con las reglas de integridad, tenemos 3 formas de manejarla:

Restriccin(Cancelacin) Cascada Anulacin

Entonces vamos a crear las tablas y algunas relaciones, considerando llaves primarias y llaves forneas, lo haremos primero en el modo grfico mediante el asistente y luego con Transact SQL, tambin haremos el diagrama de la base de datos, para esto implementaremos dos bases de datos distintas con solo 3 tablas que servirn para nuestro ejemplo.

MODO GRAFICO
1.- Forma Grfica: Primero vamos al SQL Server Management Studio

Creemos nuestra base de Datos en Click derecho Databases New DataBase y le colocaremos el nombre Tienda.

Luego de creada nuestra Base de datos, vamos a crear tablas mediante el asistente, Click derecho New Table y le damos los siguientes campos:

Luego de creada nuestra Base de datos, vamos a crear tablas mediante el asistente, Click derecho New Table y le damos los siguientes campos:

Ahora si refrescas tu explorador del Management visualizars las tablas ya creadas. Si te has dado cuenta en las tablas Cliente tenemos el campo Cod_Distrito y en Factura tenemos el campo Cod_Cliente, te preguntars Por qu repito el valor?, bueno este campo nos permitir hacer la relacin en el diagrama de bases de datos como llave Fornea. Ahora vamos a hacer el diagrama y crear las relaciones, vamos a Database Diagrams le hacemos click derecho New Database Diagram (te preguntar si deseas crearlo coloca Yes)

Selecciona las tablas que participaran en el diagrama (en este caso todas) y dale Add, luego cuando estn agregadas slo dale close y vers que las tablas estn en pantalla, puedes acomodarlas con el mouse si deseas.

Ahora asignaremos las Primary Keys, las Llaves primarias son valores especiales que identificar de manera nica a cada fila de la tabla y no pueden existir dos llaves primarias iguales estas no pueden repetirse en ningn otro registro de la tabla. Para asignarla simplemente en el diagrama puedes hacer click derecho sobre el campo y selecciona Set Primary Key (tambin se puede hacer al momento de crear los campos y tipos de datos).

Crearemos ahora la relacin, asignaremos la Foreign Key o tambin Llave Fornea esta establecer la relacin entre las tablas, para esto solo arrastramos desde el smbolo de la Primary Key en la tabla Distrito sin soltar hasta la tabla Cliente, donde nos pedir que especifiquemos el campo a relacionar y elegimos Cod_Distrito y le damos Ok dos veces. Como podemos ver elegimos Cod_Distrito que es igual al campo de la Tabla Distrito, esto se defini al inicio colocndolo de manera premeditada para que ahora sirva finalmente de campo a relacionar, estos campos de relacin pueden tener diferentes nombres pero es importante que sea el mismo tipo de dato sino la relacin producir un error.

Datos de la Relacin:

Hacemos los mismo desde la Tabla Cliente hacia la tabla Factura relacionndolo con el campo Cod_Cliente, ahora guarda los cambios.

!!!Ahora seguramente si usas SQL Server 2008 tendrs un error Saving changes is not permitted que no te permitir guardar los cambios, te sale un mensaje en el que te indica que tendrs que recrear las tablas, tranquilo para esto hay solucin Qu sucede? es que en SQL Server Management Studio ahora no te permite hacer este tipo de cambios mediante el Diseador, o sea a nivel de interfaz (una razn muy buena para hacer esto por Transact) as que para que puedas continuar primero debes desmarcar la opcion Prevent saving changes that require table re-creation (Viene predeterminada) que se encuentra en la ruta Tools/Options/Designers/Table and Database Designers, as podrs guardar los cambios y tendrs tu diagrama.

Finalmente el diagrama deber quedar as, cirralo y guarda los cambios.

*Diagrama para cliente nico

2.- Utilizando Transact-SQL: Bueno ahora veremos la forma de hacerlo mediante las Querys:

Primero vamos al boton New Query y abrimos una nueva consulta. Debemos crear una base de datos y luego ponerla en uso entonces escribimos lo siguiente y lo ejecutamos:
CREATE DATABASE HOTELERA USE HOTELERA

Ahora vamos a crear las tablas Hotel, Habitacin y Cliente para eso escribimos y ejecutamos lo siguiente:
CREATE TABLE HOTEL (IdHotel char(5) not null, Nombre varchar (20), Direccion varchar (20),

Telefono varchar (10), Num_Habitaciones int) CREATE TABLE HABITACION (Num_Habitacion int not null, Estado varchar (20), Descripcin varchar (20), Num_Camas int) CREATE TABLE CLIENTE (DNI char(8) not null, Nombre varchar (50), Apellido varchar (50), Fecha_Ingreso datetime, Fecha_Salida datetime, Hora_Ingreso time, Hora_salida time)

Como podrs ver despus de darle un refresh al explorador del Management tendremos nuestras tablas creadas, dentro de los tipos de datos te podrs preguntar porque algunos prefer colocarle char y en otras varchar, la razn es que en el tipo de dato char si colocas char(5) as se escriba un caracter se estar ocupando los 5 espacios reservados en cambio con varchar(5) si se escribe un slo caracter esta cadena solo ocupar 1 espacio de los 5 reservados, esto es para siempre cuidar la memoria utilizada en tu base de datos, otra inquietud quizs sea por qu utilizar la palabra reservada not null ? es que en estos campos se establecern las Primary Keys ms adelante y estas no aceptan valores nulos o vacios.

Podemos darles los siguientes Select para comprobar que estn correctamente creadas:
SELECT * FROM HOTEL SELECT * FROM HABITACION SELECT * FROM CLIENTE

Ahora vamos a agregarle a las tablas Habitacin y Cliente los campos que servirn de referencia para las Foreign Keys (tambin son not null) mediante el comando ALTER TABLE ADD
ALTER TABLE HABITACION ADD IdHotel char(5) not null ALTER TABLE CLIENTE ADD Num_Habitacion int not null

Ahora agregumosle las Llaves Primarias y Forneas.


ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE ALTER TABLE HABITACION HOTEL ADD PRIMARY KEY (IdHotel) HABITACION ADD PRIMARY KEY (Num_Habitacion) CLIENTE ADD PRIMARY KEY (DNI) HABITACION ADD FOREIGN KEY (IdHotel) references HOTEL CLIENTE ADD FOREIGN KEY (Num_Habitacion) references

Mediante el Alter Table Add Foreign Key tambin hacemos referencia a la tabla de donde proviene la Llave Principal y con la palabra reservada references se crear la relacin entre las tablas.

Pasemos a la creacin del Diagrama, se seguirn los mismos pasos ya mencionados en el modo grfico, pero esta vez al agregar las tablas podremos observar que las relaciones ya estn creadas solo guardamos el diagrama y listo.

Como dato adicional puedes tambin eliminar alguna columna con el comando ALTER TABLE DROP COLUMN --ALTER TABLE ELIMINAR CAMPO
ALTER TABLE HOTEL DROP COLUMN Nombre_Campo ALTER TABLE CLIENTE DROP COLUMN Nombre_Campo ALTER TABLE HABITACION DROP COLUMN Nombre_Campo

Y Puedes modificar algn tipo de datos mediante el comando ALTER TABLE ALTER COLUMN --ALTER TABLE CAMBIO DE TIPO DE DATO
ALTER TABLE HOTEL ALTER COLUMN Telefono Nuevo_Tipo_Dato ALTER TABLE HABITACION ALTER COLUMN Estado Nuevo_Tipo_Dato ALTER TABLE CLIENTE ALTER COLUMN Apellido Nuevo_Tipo_Dato

Bueno espero que este post les permita trabajar de la manera adecuada y sobretodo que les haya sido de utilidad.

Gracias.

FIN

You might also like