¿Como están amigos? después de unas pequeñas vacaciones además de un tiempo que eh tenido el blog un poco abandonado regreso dándoles otra ayudita en Transact – SQL, como saben estas todavía no son cosas muy difíciles, pero para los que tengan alguna duda podrán ayudarse con estos ejemplos que les comparto.
Bueno ahora sabemos que ya creada nuestra base de datos, con los parámetros que consideremos necesarios viene la creación de tablas y tenemos que designarles sus respectivos tipos de datos además de hacer las relaciones, para esto tenemos dos maneras la forma gráfica y mediante querys en Transact, en lo que es integridad referencial es importante que las tablas estén VACIAS, ya que si las tablas contienen datos tendríamos problemas si alguno de estos registros insertados no cumplan con las reglas de integridad, tenemos 3 formas de manejarla:
- Restricción(Cancelación)
- Cascada
- Anulación
Entonces vamos a crear las tablas y algunas relaciones, considerando llaves primarias y llaves foráneas, lo haremos primero en el modo gráfico mediante el asistente y luego con Transact SQL, también haremos el diagrama de la base de datos, para esto implementaremos dos bases de datos distintas con solo 3 tablas que servirán para nuestro ejemplo.
1.- Forma Gráfica:
- Primero vamos al SQL Serer 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:



- Ahora si refrescas tu explorador del Management visualizarás 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 preguntarás ¿Por qué repito el valor?, bueno este campo nos permitirá hacer la relación en el diagrama de bases de datos como llave Foránea, eso lo explicaré mas adelante.
- 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 estén agregadas sólo dale close y verás que las tablas están 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 ningun otro registro de la tabla. Para asignarla simplemente en el diagrama puedes hacer click derecho sobre el campo y selecciona “Set Primary Key” (también se puede hacer al momento de crear los campos y tipos de datos).

- Crearemos ahora la relación, asignaremos la Foreign Key o también Llave Foránea esta establecerá la relación entre las tablas, para esto solo arrastramos desde el símbolo 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 colocándolo de manera premeditada para que ahora sirva finalmente de campo a relacionar, estos campos de relación pueden tener diferentes nombres pero es importante que sea el mismo tipo de dato sino la relación producirá un error.

- Hacemos los mismo desde la Tabla Cliente hacia la tabla Factura relacionandolo con el campo Cod_Cliente, ahora guarda los cambios.
!!!Ahora seguramente si usas SQL Server 2008 tendrás un error “Saving changes is not permitted…” que no te permitará guardar los cambios, te sale un mensaje en el que te indica que tendrás que recrear las tablas, tranquilo para esto hay solución ¿Qué sucede? es que en SQL Server Management Studio ahora no te permite hacer este tipo de cambios mediante el Diseñador osea a nivel de interfaz (una razón 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í podrás guardar los cambios y tendrás tu diagrama.

Finalmente el diagrama deberá quedar así, cierralo y guarda los cambios.
*Diagrama para cliente único
2.- 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, Habitación 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),
Descripción 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 podrás ver después de darle un refresh al explorador del Management tendremos nuestras tablas creadas, dentro de los tipos de datos te podrás preguntar porque algunos preferí colocarle “char” y en otras “varchar”, la razón 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 sólo 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 quizás sea ¿por qué utilizar la palabra reservada “not null” ? es que en estos campos se establecerán las Primary Keys más adelante y estas no aceptan valores nulos o vacios.
- Podemos darles los siguientes Select para comprobar que estén correctamente creadas:
SELECT * FROM HOTEL
SELECT * FROM HABITACION
SELECT * FROM CLIENTE
- Ahora vamos a agregarle a las tablas Habitación y Cliente los campos que servirán de referencia para las Foreign Keys (también 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 agregémosle las Llaves Primarias y Foráneas
ALTER TABLE HOTEL ADD PRIMARY KEY (IdHotel)
ALTER TABLE HABITACION ADD PRIMARY KEY (Num_Habitacion)
ALTER TABLE CLIENTE ADD PRIMARY KEY (DNI)
ALTER TABLE HABITACION ADD FOREIGN KEY (IdHotel) references HOTEL
ALTER TABLE CLIENTE ADD FOREIGN KEY (Num_Habitacion) references HABITACION
- Mediante el Alter Table Add Foreign Key también hacemos referencia a la tabla de donde proviene la Llave Principal y con la palabra reservada “references” se creará la relación entre las tablas.
- Pasemos a la creación del Diagrama, se seguirán los mismos pasos ya mencionados en el modo gráfico, pero esta vez al agregar las tablas podremos observar que las relaciones ya están creadas solo guardamos el diagrama y listo.

*Diagrama para cliente único
- Como dato adicional puedes tambien 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 algun 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 …saludos
Comentarios Recientes