CREACIÓN DE TABLAS DE
UNA TIENDA VIRTUAL
Creación de tablas de la tarea en SQL
La tarea consta de tres actividades, la primera; creación de tablas
para una tienda virtual, la segunda; modificar las tablas, quitar y
dar permisos a un usuario y la tercera; importar el diagrama del
modelo entidad relación
YERAI QUÍLEZ ALMEIDA, 1º DAW, Bases de datos
ÍNDICE
1. Creación de tablas para una tienda virtual ................................................................... 1
2. Modificación de las tablas ............................................................................................ 2
3. Obtención del diagrama del modelo entidad relación .................................................. 4
4. Fuentes ........................................................................................................................ 5
1. CREACIÓN DE TABLAS PARA UNA TIENDA VIRTUAL
En este ejercicio se pide crear tablas en SQL plus o en SQL Developer.
1.1. Se ha elaborado las tablas en SQL Developer, he añadido las restricciones pedidas y he cumplido la integridad
referencial.
1.2. En la tabla Familia, se ha seleccionado:
• El valor Codfamila es tipo numérico de tres dígitos y es la clave primaria.
• El valor Denofamilia es tipo alfanumérico con cincuenta caracteres y con la restricción unique para que no
haya dos familias con la misma denominación y la restricción not null para que sea un campo obligatorio
y tenga contenido.
1.3. En la tabla Producto, se ha seleccionado:
• El valor Codproducto es de tipo numérico de cinco dígitos y es la clave primaria.
• El valor Denoproducto es de tipo alfanumérico de veinte caracteres y la restricción not null para que sea
un campo obligatorio y tenga contenido.
• El valor Descripción es de tipo alfanumérico de cien caracteres.
• El valor PrecioBase es de tipo numérico de ocho dígitos y dos de ellos decimales, con la restricción de check
para que el valor añadido sea mayor que cero y la restricción not null para que sea un campo obligatorio
y tenga contenido.
• El valor PorcReposición es de tipo numérico de tres dígitos, con la restricción check para que el valor
añadido sea mayor que cero.
• El valor UnidadesMinimas es de tipo numérico de cuatro dígitos, con la restricción de check para que el
valor añadido sea mayor que cero y la restricción not null para que sea un campo obligatorio y tenga
contenido.
• El valor Codfamilia es de tipo numérico de tres dígitos, con la restricción foreign key, referencia a
Codfamilia de la tabla Familia y la restricción not null para que sea un campo obligatorio y tenga contenido.
1.4. En la tabla Tienda, se ha seleccionado:
• El valor Codtienda es de tipo numérico de tres dígitos y es la clave primaria.
• El valor Denotienda es de tipo alfanumérico de veinte caracteres y la restricción not null para que sea un
campo obligatorio y tenga contenido.
• El valor Telefono es de tipo alfanumérico de once caracteres.
• El valor CodigoPostal es de tipo alfanumérico de cinco caracteres y la restricción not null para que sea un
campo obligatorio y tenga contenido.
• El valor Provincia es de tipo alfanumérico de cinco caracteres y la restricción not null para que sea un
campo obligatorio y tenga contenido.
1.5. En la tabla Stock, se ha seleccionado:
• El valor Codtienda es de tipo numérico de tres dígitos, es uno de los valores de la clave primaria y con la
restricción foreign key, referencia a Codtienda de la tabla Tienda y la restricción not null para que sea un
campo obligatorio y tenga contenido.
• El valor Codproducto es de tipo numérico de cinco dígitos, es uno de los valores de la clave primaria y con
la restricción foreign key, referencia a Codproducto de la tabla Producto y la restricción not null para que
sea un campo obligatorio y tenga contenido.
Página 1|5
2. MODIFICACIÓN DE LAS TABLAS
Aquí se pide que se modifiquen las tablas diseñadas en el ejercicio 1 con los siguientes apartados.
A) Modificar las tablas creadas en el ejercicio anterior siguiendo las indicaciones. Los ejercicios se incluirán en un
script llamado “[Link]”. Cada uno de ellos, como en el ejercicio anterior, irá precedido de un
comentario con el enunciado.
1) Añadir a la tabla STOCK
o Una columna de tipo fecha, llamada FechaUltimaEntrada, que por defecto tome el valor de la fecha
actual. Para hacer este añadido he creado la sentencia SQL:
alter table Stock add FechaUltimaEntrada date default sysdate;
o Una columna llamada Beneficio, que contendrá el tipo de porcentaje de beneficio que esa tienda aplica
en ese producto. Se debe controlar que el valor que almacene sea 1,2, 3, 4 o 5. Para hacerlo he creado
la sentencias SQl:
alter table Stock add Beneficio numeric (1) constraint ck_ben check (Beneficio = 1 or Beneficio = 2
or Beneficio = 3 or Beneficio = 4 or Beneficio = 5) ;
alter table Stock add constraint fk_ben_codtien foreign key (Beneficio) References Tienda
(Codtienda);
alter table Stock add constraint fk_ben_codpro foreign key (Beneficio) References Producto
(Codproducto);
• En la tabla Producto
o Eliminar de la tabla producto la columna Descripción. He creado la sentencia:
alter table Producto drop column Descripción;
o Añadir una columna llamada perecedero, que únicamente acepte los valores: S o N. hecho con la
sentencia:
alter table Producto add Perecedero char constraint ck_per check (Perecedero = 'S' or
Perecedero = 'N')
o Modificar el tamaño de la columna Denoproducto a 50. La sentencia utilizada es:
alter table Producto modify Denoproducto varchar (50);
• En la tabla Familia
o Añadir una columna llamada IVA, que represente el porcentaje de IVA y únicamente pueda contener
los valores 21,10,ó 4. La sentencia empleada es:
alter table Familia add IVA numeric (2) constraint ck_iva check (IVA= 4 or IVA=10 or IVA=21);
• En la table Tienda
o La empresa desea restringir el número de tiendas con las que trabaja, de forma que no pueda haber
más de una tienda en una misma zona (la zona se identifica por el código postal). Definir mediante DDL
las restricciones necesarias para que se cumpla en el campo correspondiente. La sentencia utilizada
es:
alter table Tienda add constraint uk_tie_codpos unique (CodigoPostal);
Anotación personal: Para este apartado he decidido usar solo una restricción unique, ya que el valor
Codtienda es una llave primaria y también tiene la restricción unique, con estas dos restricciones ya se
cumple que no pueda haber dos tiendas en la misma zona.
Página 2|5
B) Renombra la tabla STOCK por PRODXTIENDAS. Se ha utilizado la sentencia:
rename Stock To Prodxtiendas;
C) Elimina la tabla FAMILIA y su contenido si lo tuviera. La sentencia es:
drop table Familia cascade constraints purge;
D) Crea un usuario llamado C##INVITADO siguiendo los pasos de la unidad 1 y dale todos los privilegios sobre la
tabla PRODUCTO. Los pasos para seguir son:
1) Seguir los pasos de la unidad 1, crear un usuario y darle permisos para conectar y crear objetos.
a) Creación de usuario.
b) Añadir permisos.
2) Se crea la sentencia:
grant select, insert, update, delete on Producto to C##INVITADO;
E) Retira los permisos de modificar la estructura de la tabla y borrar contenido de la tabla PRODUCTO al usuario
anterior. Mediante la sentencia:
revoke insert, delete on Producto from C##INVITADO;
Página 3|5
3. OBTENCIÓN DEL DIAGRAMA DEL MODELO ENTIDAD RELACIÓN
Se pide que se genere el diagrama a partir de los ejercicios 1 y 2 una vez resueltos. Mediante este enlace se puede
obtener el diagrama
a) Diagrama del modelo entidad relación de los ejercicios 1 y 2.
Página 4|5
4. FUENTES
[Link] para las restricciones
[Link] para el apartado D del ejercicio 2.
[Link] para el apartado E del ejercicio 2.
[Link] para el
ejercicio 3.
Página 5|5