Está en la página 1de 8

CONSTRUCCION DE LA ESTRUCTURA DE LOS DATOS

Objetivo: Incorporar los conceptos pertinentes para estructurar el modelo fsico de los datos,
elemento necesario para la implementacin de la base de datos del proyecto.


El DDL, lenguaje de definicin de datos

Introduccin

El DDL (Data Definition Language) lenguaje de definicin de datos es la parte del SQL que
ms vara de un sistema a otro ya que esa rea tiene que ver con cmo se organizan
internamente los datos y eso, cada sistema lo hace de una manera u otra.
Sin embargo existe una codificacin estndar que nos permite identificar una serie de
caractersticas del lenguaje y las sentencias utilizadas en l. A continuacin se describe la
construccin de tablas, modificacin y eliminacin de las mismas.

CREATE TABLE

La sentencia CREATE TABLE sirve para crear la estructura de una tabla no para rellenarla con
datos, nos permite definir las columnas que tiene y ciertas restricciones que deben cumplir esas
columnas.
La sintaxis es la siguiente:

nbtabla: nombre de la tabla que estamos definiendo
nbcol: nombre de la columna que estamos definiendo
tipo: tipo de dato de la columna, todos los datos almacenados en la columna debern ser de
ese tipo

Una restriccin (constraint) consiste en la definicin de una caracterstica adicional que tiene
una columna o una combinacin de columnas, suelen ser caractersticas como valores no nulos
(campo requerido), definicin de ndice sin duplicados, definicin de clave principal y definicin
de clave fornea (clave ajena o externa, campo que sirve para relacionar dos tablas entre s).
restriccin1: una restriccin de tipo 1 es una restriccin que aparece dentro de la definicin de
la columna despus del tipo de dato y afecta a una columna, la que se est definiendo.
restriccin2: una restriccin de tipo 2 es una restriccin que se define despus de definir todas
las columnas de la tabla y afecta a una columna o a una combinacin de columnas.

Para escribir una sentencia CREATE TABLE se empieza por indicar el nombre de la tabla que
queremos crear y a continuacin entre parntesis indicamos separadas por comas las
definiciones de cada columna de la tabla, la definicin de una columna consta de su nombre, el
tipo de dato que tiene y podemos aadir si queremos una serie de especificaciones que
debern cumplir los datos almacenados en la columna, despus de definir cada una de las
columnas que compone la tabla se pueden aadir una serie de restricciones, esas restricciones
son las mismas que se pueden indicar para cada columna pero ahora pueden afectar a ms de
una columna por eso tienen una sintaxis ligeramente diferente.



Una restriccin de tipo 1 se utiliza para indicar una caracterstica de la columna que
estamos definiendo, tiene la siguiente sintaxis:

La clusula NOT NULL indica que la columna no podr contener un valor nulo, es decir que
se deber rellenar obligatoriamente y con un valor vlido (equivale a la propiedad requerido S
de las propiedades del campo).

La clusula CONSTRAINT sirve para definir una restriccin que se podr eliminar cuando
queramos sin tener que borrar la columna. A cada restriccin se le asigna un nombre que se
utiliza para identificarla y para poder eliminarla cuando se quiera.

Como restricciones tenemos la de clave primaria (clave principal), la de ndice nico (sin
duplicados), la de valor no nulo, y la de clave fornea.

La clusula PRIMARY KEY se utiliza para definir la columna como clave principal de la tabla.
Esto supone que la columna no puede contener valores nulos ni pueden haber valores
duplicados en esa columna, es decir que dos filas no pueden tener el mismo valor en esa
columna.

En una tabla no puede haber varias claves principales, por lo que no podemos incluir la
clusula PRIMARY KEY ms de una vez, en caso contrario la sentencia da un error. No hay
que confundir la definicin de varias claves principales con la definicin de una clave principal
compuesta por varias columnas, esto ltimo s est permitido y se define con una restriccin de
tipo 2.

La clusula UNIQUE sirve para definir un ndice nico sobre la columna. Un ndice nico es un
ndice que no permite valores duplicados, es decir que si una columna tiene definida un
restriccin de UNIQUE no podrn haber dos filas con el mismo valor en esa columna. Se suele
emplear para que el sistema compruebe el mismo que no se aaden valores que ya existen,
por ejemplo si en una tabla de clientes queremos asegurarnos que dos clientes no puedan
tener el mismo D.N.I. y la tabla tiene como clave principal un cdigo de cliente, definiremos la
columna dni con la restriccin de UNIQUE.

La clusula NOT NULL indica que la columna no puede contener valores nulos, cuando
queremos indicar que una columna no puede contener el valor nulo lo podemos hacer sin poner
la clusula CONSTRAINT, o utilizando una clusula CONSTRAINT.

La ltima restriccin que podemos definir sobre una columna es la de clave fornea, una clave
fornea es una columna o conjunto de columnas que contiene un valor que hace referencia a
una fila de otra tabla, en una restriccin de tipo 1 se puede definir con la clusula
REFERENCES, despus de la palabra reservada indicamos a qu tabla hace referencia,
opcionalmente podemos indicar entre parntesis el nombre de la columna donde tiene que
buscar el valor de referencia, por defecto coge la clave principal de la tabla2, si el valor que
tiene que buscar se encuentra en otra columna de tabla2, entonces debemos inidicar el nombre
de esta columna entre parntesis, adems slo podemos utilizar una columna que est definida
con una restriccin de UNIQUE, si la columna2 que indicamos no est definida sin duplicados,
la sentencia CREATE nos dar un error.

Para seguir con la instruccin CREATE TABLE pasa a la siguiente pgina...
Ejemplo:
CREATE TABLE tab1 (
col1 INT PRIMARY KEY NOT NULL,
col2 CHAR(25) NOT NULL,
col3 CHAR(10) UNIQUE,
col4 INTEGER,
col5 INT NULL);

Con este ejemplo estamos creando la tabla tab1 compuesta por: una columna llamada col1 de
tipo entero definida como clave principal, una columna col2 que puede almacenar hasta 25
caracteres alfanumricos y no puede contener valores nulos, una columna col3 de hasta 10
caracteres que no podr contener valores repetidos, una columna col4 de tipo entero sin
ninguna restriccin, y una columna col5 de tipo entero que no tiene restricciones.

Una restriccin de tipo 2 se utiliza para definir una caracterstica que afecta a una
columna o a una combinacin de columnas de la tabla que estamos definiendo, se escribe
despus de haber definido todas las columnas de la tabla.
Tiene la siguiente sintaxis:

La sintaxis de una restriccin de tipo 2 es muy similar a la CONSTRAINT de una restriccin 1 la
diferencia es que ahora tenemos que indicar sobre qu columnas queremos definir la
restriccin. Se utilizan obligatoriamente las restricciones de tipo 2 cuando la restriccin afecta a
un grupo de columnas o cuando queremos definir ms de una CONSTRAINT para una
columna (slo se puede definir una restriccin1 en cada columna).

La clusula PRIMARY KEY se utiliza para definir la clave principal de la tabla. Despus de
las palabras PRIMARY KEY se indica entre parntesis el nombre de la columna o las columnas
que forman la clave principal. Las columnas que forman la clave principal no pueden contener
valores nulos ni puede haber valores duplicados de la combinacin de columnas.

En una tabla no puede haber varias claves principales, por lo que no podemos indicar la
clusula PRIMARY KEY ms de una vez, en caso contrario la sentencia da un error.

La clusula UNIQUE sirve para definir un ndice nico sobre una columna o sobre una
combinacin de columnas. Un ndice nico es un ndice que no permite valores duplicados.
Si el ndice es sobre varias columnas no se puede repetir la misma combinacin de valores en
dos o ms filas. Se suele emplear para que el sistema compruebe el mismo que no se aaden
valores que ya existen.

La clusula FOREIGN KEY sirve para definir una clave fornea sobre una columna o
una combinacin de columnas. Una clave fornea es una columna o conjunto de columnas
que contiene un valor que hace referencia a una fila de otra tabla, en una restriccin 1 se
puede definir con la clusula REFERENCES. Para definir una clave fornea en una restriccin
de tipo 2 debemos empezar por las palabras FOREIGN KEY despus indicamos entre
parntesis la/s columna/s que es clave fornea, a continuacin la palabra reservada
REFERENCES seguida del nombre de la tabla a la que hace referencia, opcionalmente
podemos indicar entre parntesis el nombre de la/s columna/s donde tiene que buscar el valor
de referencia, por defecto coge la clave principal de la tabla2, si el valor que tiene que buscar
se encuentra en otra/s columna/s de tabla2, entonces debemos escribir el nombre de esta/s
columna/s entre parntesis, adems slo podemos utilizar una columna (o combinacin de
columnas) que est definida con una restriccin de UNIQUE, de lo contrario la sentencia
CREATE TABLE nos dar un error.

Ejemplo:
CREATE TABLE tab1
(col1 INTEGER,
col2 CHAR(25) NOT NULL,
col3 CHAR(10),
col4 INTEGER,
col5 INT,
CONSTRAINT pk PRIMARY KEY (col1),
CONSTRAINT uni1 UNIQUE (col3) );
Con este ejemplo estamos creando la misma tabla tab1 del ejemplo de la pgina anterior pero
ahora hemos definido las restricciones utilizando restricciones de tipo 2.

ALTER TABLE
La sentencia ALTER TABLE sirve para modificar la estructura de una tabla que ya existe.
Mediante esta instruccin podemos aadir columnas nuevas, eliminar columnas. Ten cuenta
que cuando eliminamos una columna se pierden todos los datos almacenados en ella.
Tambin nos permite crear nuevas restricciones o borrar algunas existentes. La sintaxis puede
parecer algo complicada pero sabiendo el significado de las palabras reservadas la sentencia
se aclara bastante; ADD (aade), ALTER (modifica), DROP (elimina), COLUMN (columna),
CONSTRAINT (restriccin).

La sintaxis es la siguiente:

La sintaxis de restriccion1 es idntica a la restriccin1 de la sentencia CREATE TABLE, te la
describimos a continuacin, si tienes alguna duda repasa la sentencia CREATE TABLE.


La sintaxis de restriccion2 es idntica a la restriccin2 de la sentencia CREATE TABLE, te la
describimos a continuacin, si tienes alguna duda repasa la sentencia CREATE TABLE.


La clusula ADD COLUMN (la palabra COLUMN es opcional) permite aadir una columna
nueva a la tabla. Como en la creacin de tabla, hay que definir la columna indicando su
nombre, tipo de datos que puede contener, y si lo queremos alguna restriccin de valor no nulo,
clave primaria, clave fornea, e ndice nico, restriccion1 es opcional e indica una restriccin
de tipo 1 que afecta a la columna que estamos definiendo.
Ejemplo:

ALTER TABLE tab1 ADD COLUMN col3 integer NOT NULL CONSTRAINT c1 UNIQUE

Con este ejemplo estamos aadiendo a la tabla tab1 una columna llamada col3 de tipo entero,
requerida (no admite nulos) y con un ndice sin duplicados llamado c1.
Cuando aadimos una columna lo mnimo que se puede poner sera:
ALTER TABLE tab1 ADD col3 integer

En este caso la nueva columna admite valores nulos y duplicados.

Para aadir una nueva restriccin en la tabla podemos utilizar la clusula ADD
restriccion2 (ADD CONSTRAINT...).
Ejemplo:
ALTER TABLE tab1 ADD CONSTRAINT c1 UNIQUE (col3)
Con este ejemplo estamos aadiendo a la tabla tab1 un ndice nico (sin duplicados) llamado
c1 sobre la columna col3.

Para borrar una columna basta con utilizar la clusula DROP COLUMN (COLUMN es
opcional) y el nombre de la columna que queremos borrar, se perdern todos los datos
almacenados en la columna.
Ejemplo:
ALTER TABLE tab1 DROP COLUMN col3
Tambin podemos escribir:
ALTER TABLE tab1 DROP col3
El resultado es el mismo, la columna col3 desaparece de la tabla tab1.

Para borrar una restriccin basta con utilizar la clusula DROP CONSTRAINT y el
nombre de la restriccin que queremos borrar, en este caso slo se elimina la definicin de la
restriccin pero los datos almacenados no se modifican ni se pierden.

Ejemplo:
ALTER TABLE tab1 DROP CONSTRAINT c1
Con esta sentencia borramos el ndice c1 creado anteriormente pero los datos de la columna
col3 no se ven afectados por el cambio.
DROP TABLE

La sentencia DROP TABLE sirve para eliminar una tabla. No se puede eliminar una tabla si
est abierta, tampoco la podemos eliminar si el borrado infringe las reglas de integridad
referencial (si interviene como tabla padre en una relacin y tiene registros relacionados). La
sintaxis es la siguiente:


Ejemplo:
DROP TABLE tab1
Elimina de la base de datos la tabla tab1.



EJERCICIO

Desarrollar el script utilizando el lenguaje estructurado de consultas Transact-SQL en SQL Server, que
d solucin a los requerimientos planteados en el siguiente enunciado:
Dada la siguiente base de datos llamada RENTACAR:

Tabla : Categora
Nombre de la columna Tipo Descripcin
Ca_codicate Int Cdigo de la categora
Ca_descate Varchar (25) Nombre de la categora
Ca_valorkilo Money Valor del Kilmetro
Ca_valordia Money Valor del Da
Ca_valormes Money Valor del Mes

Tabla : Tanques
Nombre de la columna Tipo Descripcin
Tn_coditanq Int Cdigo del Tanque
Tn_lleno Money Valor del Tanque lleno
Tn_3_4 Money Valor del Tanque
Tn_medio Money Valor del Tanque Medio
Tn_1_4 Money Valor del Tanque 1/4


Tabla : Formapago
Nombre de la columna Tipo Descripcin
Fp_codiformpago Tinyint Cdigo de Forma de Pago
Fp_desformpago Varchar (30) Descripcin Forma de Pago


Tabla : Pagos
Nombre de la columna Tipo Descripcin
Pa_numepago Int Nmero del pago
Pa_numecont Int Nmero del contrato
Pa_identusua BigInt Identificacin del usuario
Pa_codiformpago Tinyint Cdigo de Forma de Pago
Pa_valorpago Money Valor del pago
Pa_fechapago Datetime Fecha de Pago


Tabla : Contrato
Nombre de la columna Tipo Descripcin
Co_numecont Int Numero del Contrato
Co_placa Char (6) Placa del Vehculo
Co_idenusua BigInt Identificacin del Usuario
Co_fechasalida Datetime Fecha de Salida
Co_fechaentrada Datetime Fecha de Entrada
Co_kilometrajes Tinyint Kilometrajes de salidas
Co_cantgasolinasaliente Tinyint Cantidad da gasolina saliente
Co_cantgasolinaentrada Tinyint Cantidad da gasolina entrada
Co_valorliquidacin Money Valor liquidacin
Co_estilo Bit Estilo del vehculo


Tabla : Vehculo
Nombre de la columna Tipo Descripcin
Ve_placa Char (6) Placa del vehculo
Ve_marca Varchar (20) Marca del vehculo
Ve_modelo Int Modelo del vehculo
Ve_codicate Int Cdigo de la categora
Ve_coditanq Int Cdigo del Tanque
Ve_estado Bit Estado del vehculo


Tabla : Usuario
Nombre de la columna Tipo Descripcin
Us_identusua BigInt Identificacin del usuario
Us_nombusua Varchar (25) Nombre del usuario
Us_apellusua Varchar (25) Apellido del usuario
Us_direusua Varchar (35) Direccin del usuario
Us_teleusua Varchar (25) Telfono del usuario











1. Crear la base de datos y la estructura de tablas con sus respectivas relaciones proporcionando el
script de construccin.
2. Generar el diagrama.
3. Abrir las tablas e introducir datos manualmente.

También podría gustarte