Vous êtes sur la page 1sur 9

2018

Taller 1 MySQL
USO DEL DDL
JHON MORENO
TALLER 1 MYSQL

Contenido
Creación de tablas ......................................................................................................................... 2
Alteración de tablas, agregación de llaves primarias .................................................................... 3
Conexión entre tablas ................................................................................................................... 4
Cambio de dominio de columnas, valores por defecto. ............................................................... 6
Valores nulos y no nulos ............................................................................................................... 7
Unique ........................................................................................................................................... 8
Cambiar nombre de la tabla .......................................................................................................... 8

Página 1|8
TALLER 1 MYSQL

Creación de tablas
Se requiere el desarrollo de una página web que permita la venta de productos y el registro de
dichas transacciones, por lo que se tienen estimado la creación de la siguiente base de datos.

Tabla Persona

 Documento
 Primer nombre
 Segundo nombre
 Primer apellido
 Segundo apellido
 Usuario
 Clave

Tabla Contacto persona

 Dirección
 Email
 Celular

Tabla Producto

 Serial
 Nombre producto
 Precio
 Descuento
 Cantidad

Tabla Cliente

 Puntos redimidos
 Puntos no redimidos

Tabla factura

 Numero factura
 Fecha
 Medio pago

Tabla Comentario vendedor

 Id comentario vendedor
 Comentario

Tabla Comentario producto

 Id comentario producto
 Comentario

Tabla contactos vendedor

 Id contacto vendedor
 Dirección

Página 2|8
TALLER 1 MYSQL

 Teléfono
 Email

Tabla Transacción

 Id transacción
 Cantidad

Tabla Empleado

 Id empleado
 Nombre empresa

Tabla imágenes

 Id imágenes
 Link

NOTA: las tablas deben crearse con los dominios VARCHAR(45) en su totalidad

Alteración de tablas, agregación de llaves primarias

Una vez realizado dicho código usaremos al “Alter table” para hacer las respectivas conexiones
entre tablas y modificar los dominios de las columnas

En primera instancia debemos identificar las llaves primarias de cada tabla y adicionalmente a
ellos cambiar su dominio

Tabla Persona -> el llave primaria de esta tabla es “Documento” por lo que hay que agregar
dicha restricción a la tabla y cambiar su dominio.

Para ello se debe primero cambiar el dominio de la columna a INT y posteriormente se debe
seleccionar dicha columna como PRIMARY KEY

Para ellos se debe usar la siguiente línea.

ALTER TABLE persona


// Antigua columna
// Cambiar CHANGE COLUMN Documento Documento INT,
//nueva columna
// Agregar ADD PRIMARY KEY(Documento);

Por consiguiente cambie las columnas a INT y vuélvalas PRIMARY KEY y que sean
AUTO_INCTREMENT a las siguientes

Tabla->Columna:

Empleado->idempleado

ALTER TABLE empelado


// Antigua columna
// Cambiar CHANGE COLUMN idempleado idempleado INT,
//nueva columna
Página 3|8
TALLER 1 MYSQL

// Agregar ADD PRIMARY KEY(idempleado);

 transacción->idtransaccion

Ejemplo:

ALTER TABLE transaccion

ADD PRIMARY KEY(idtransaccion),

CHANGE COLUMN idtransaccion idtransaccion INT AUTO_INCREMENT;

 Imágenes->idImagenes
 Factura->Numero_factura
 contactos_vendedor->idcontactos_vendedor
 comentarios_producto->idcomentarios_producto
 comentario_vendedor->idcomentario_vendedor

Para la tabla la tabla “contacto_persona” podemos identificar que falta un dato candidato a
llave primaria por lo que debemos alterarla agregando la columna y posteriormente volverla
PRIMARY KEY

ALTER TABLE contacto_persona


//Agregamos la columna entera y la ponemos en primer lugar First”
ADD COLUMN Documento INT FIRST,
ADD PRIMARY KEY (Documento);

Para la tabla “Cliente” debemos hacer la misma operación.

Para la tabla producto sólo se debe agregar la columna “serial” como primaria
ALTER TABLE producto
ADD PRIMARY KEY (serial);

Conexión entre tablas

Para que la base de datos se encuentre relacionada se deben tener en cuenta 2 factores: 1. La
tabla débil debe tener una columna que almacene el mismo dato de la tabla fuerte y este debe
tener el mismo dominio que la primaria sin importar el nombre de la columna.
Es decir que para conectar las tablas de persona con cliente, cliente debe tener una columna
que permita el almacenamiento del mismo dato y el nombre de la columna puede ser el
mismo o no, eso depende de usted.

Página 4|8
TALLER 1 MYSQL

Para poder hacer la conexión de estas tablas debemos hacer la siguiente sentencia:
ALTER TABLE cliente
ADD CONSTRAINT fk_persona_cliente FOREIGN KEY (documento)
REFERENCES persona (documento)
ON DELETE NO ACTION ON UPDATE CASCADE;
Recuerde que se altera la tabla que contiene la llave foránea en este caso cliente y se agrega
un CONSTRAINT para asignarle nombre a la llave foránea, este debe ser relacionado a la
conexión y se hace referencia a la tabla y columna de la llave primaria.

Al momento de crear las conexiones de las tablas debemos de mejorar el diseño en términos
de consulta y para ello se deben indexar la llaves foráneas, recuerde que si la llave foránea es
primaria se puede saltar este paso, peri sin no lo es hay que agregar el índice en la alteración.
Ejemplo.

Como pueden ver en la figura anterior la tabla factura debe relacionarse con cliente y así
mismo con el empleado, pero en factura no hay columna que permita el almacenamiento de
los datos primarios como foráneos. Para ello debemos hacer la siguiente sentencia.

ALTER TABLE factura


ADD COLUMN documento_cliente INT,
ADD INDEX ix_cliente_factura (documento_cliente),
ADD CONSTRAINT fk_cliente_factura FOREIGN KEY (documento_cliente)
REFERENCES cliente (documento)
ON DELETE NO ACTION ON UPDATE CASCADE;
Se altera la tabla facture ya que es esta la que contiene la llave foránea y se agrega la columna
llamada “documento_cliente” que es entera separada por una coma (,) se agrega el índex para
mejorar las consultas ADD INDEX, el nombre de ésta no tiene relevancia alguna más que para
poderla buscar y eliminar. Se agrega el constraint para hacer la llave foránea.
Y este sería el resultado.

Página 5|8
TALLER 1 MYSQL

Debe realizar las conexiones pertinentes de acuerdo con el siguiente diagrama:

Cambio de dominio de columnas, valores por defecto.

En ocasiones es necesario cambiar los dominios de las columnas y agregar valores por defecto
dependiendo la necesidad del negocio.

Página 6|8
TALLER 1 MYSQL

Para ello se usa el ALTER TABLE.

Ejemplo: en las tablas creadas y manipuladas anteriormente hay una tabla que tienen una
columna que es “fecha” a la cual se le pueden agregar valores que correspondan a la misma y
como verán esta es VARCHAR(45). Por lo que es necesario cambiar dicho dominio y a su vez
agregar un valor por defecto para que este almacene un dato si es que el aplicativo o usuario
no lo hace.

ALTER TABLE factura


CHANGE COLUMN fecha fecha TIMESTAMP NULL DEFAULT current_timestamp();
Al cambiar la columna agregamos el dominio timestamp para que permita ejecutar la función
current_timestamp(), esta obtiene el dato de la fecha y tiempo del servidor concurrente y
almacena este en la columna “fecha”.

Debe cambiar el dominio y agregar los siguientes valores por defecto.


 Producto->
o precio decimal de 13,2 y por defecto 0.
o Descuento int por defecto 0.
o Cantidad int por defecto 0.
 Contacto_vendedor-> Teléfonos int de 11, no nulos y por defecto 0.
 Factura -> agregar total decimal de 13,2, no nulo y por defecto 0.
 Cliente-> punto_redimidos y no redimidos a int(4)y por defecto 0.
 Tarnsaccion-> cantidad int y por defecto 0.

Valores nulos y no nulos


Los valores nulos y no nulos son muy usados en las bases de datos debido a su importancia al
momento de almacenar la información.

Los not null son restricciones de columnas que permiten obligar al el registro de algún dato
mientras que al null no obliga al registro.

Ejemplo: los datos de registro en la tabla Persona, almacena los datos de identificación de
personas y para ellos se debería obligar el registro de por lo menos el primer nombre y el
primer apellido ya que todas las personas tienen este dato, mientras que algunas no tienen
segundo nombre y hasta segundo apellido. Es por esto que no se les obliga, con un null en
estos últimos se codifica y con un not null en los primeros.

Para ellos se debe alterar la columna cambiando la misma y agregar un not nul a los valores
que son obligatorios.

Ejemplo:

ALTER TABLE persona


CHANGE COLUMN primer_nombre primer_nombre VARCHAR(45) NOT NULL ,
CHANGE COLUMN primer_apellido primer_apellido VARCHAR(45) NOT NULL ;
Debe cambiar este factor a:
 Contacto_persona
o Direccion
o Email

Página 7|8
TALLER 1 MYSQL

 Persona
o Usuario
o Clave
 Factura
o Medio de pago
 Producto
o Nombre
 Comentarios producto
o Comentario
 Comentario vendedor
o Comentario
 Empleado
o Nombre empresa
 Contacto vendedor
o Dirección
o Teléfono
o Email

Unique
La restricción unique se usa para que un dato sea único en todo los registros esto sin volverlo
primario.

Ejemplo los datos de usuario que hace que este se logue o se identifique en un aplicativo no se
deben repetir y por ende hay que aplicar la restricción.

ALTER TABLE persona


ADD UNIQUE INDEX usuario_UNIQUE (usuario ASC);

Esta restricción hace que la columna usuario sea único en toda la tabla haciendo que al
registrar el dato se busque este en todos los registros en orden de a – z (ASC) y así no se
repetirá este dato.

Agregar dicha restricción a las siguientes columnas:

 Contacto persona
o Email
o Celular
 Contacto vendedor
o Email

Cambiar nombre de la tabla


Para cambiar el nombre de la tabla se deben hacer la siguiente sentencia:
ALTER TABLE contacto_persona
RENAME TO contacto_cliente;

Página 8|8

Vous aimerez peut-être aussi