Fundamentos de bases de datos
3-3: Reglas de negocio y normalización
Prácticas
Ejercicio 1: Bases de datos relacionales
Visión general
En esta práctica analizará la estructura de una tabla determinada y pasará la tabla al formato normal especificado.
Tareas
1. Analice la tabla determinada que no está normalizada. La tabla contiene información específica sobre artículos como el ID de
artículo, el color del artículo y el precio unitario de cada uno de los artículos. Algunas de las filas de la tabla tienen un grupo
repetido de información. Evalúe los datos de la tabla y pase la tabla al primer formato normal:
Item ID Color Unit Price
IT001 Red, Blue $16.56
IT002 Yellow $17.48
IT003 Green $19.76
IT004 Blue, Yellow $20.00
Solución:
La tabla no está en la primera forma normal porque la columna Color contiene varios valores. Por ejemplo, la
primera fila incluye valores "Rojo y azul". Se dice que una tabla está en 1NF si
No hay filas duplicadas
Los datos son atómicos (cada celda tiene un solo valor)
Para llevar esta tabla a la primera forma normal, la dividimos en dos tablas
Tabla 1: ITEM_COLOR
Item ID Color
IT001 Red
IT001 Blue
IT002 Yellow
IT003 Green
IT004 Blue
IT004 Yellow
Tabla 2: ITEM_PRICE
Item ID Unit Price
IT001 $16.56
IT002 $17.48
IT003 $19.76
IT004 $20.00
2. Analice la tabla especificada. La tabla tiene el primer formato normal y tiene una llave primaria compuesta formada por el ID de
proveedor y el ID de almacén. La ubicación del atributo no de clave solo depende del ID de almacén.
Evalúe los datos almacenados en la tabla y pase la tabla al segundo formato normal:
Supplier ID Store ID Location
SP001 S1 New York
SP001 S3 Vermont
SP002 S1 New Hampshire
SP003 S2 Rhode Island
SP004 S3 Illinois
Solución:
Si un atributo no depende del UID hay que crear una entidad adicional con el UID adicional
Tabla 1: SUPPLIER_STORE
Supplier ID Store ID
SP001 S1
SP001 S3
SP002 S1
SP003 S2
SP004 S3
Tabla 2: STORE_LOCATION
Store ID Location
S1 New Hampshire
S2 Rhode Island
S3 Vermont
3. Analice la tabla determinada y los datos almacenados. En la tabla, el ID de libro es la llave primaria y la descripción de categoría
depende del ID de categoría. Evalúe los datos almacenados en la tabla y elimine la dependencia transitiva para pasar la tabla al
tercer formato normal:
Book ID Category ID Category Desc Price
1 1 Cooking $27.99
2 2 Travel $17.99
3 1 Cooking $20.99
4 3 Computers $40.99
5 2 Travel $19.99
Solución:
Se debe mover cualquier atributo no UID que dependa de otro atributo no UID a una nueva identidad
Tabla 1: BOOK_PRICE_CATEGORY
Book ID Category ID Price
1 1 $27.99
2 2 $17.99
3 1 $20.99
4 3 $40.99
5 2 $19.99
Tabla 2: CATEGORY_ID_CATEGORY_DESC
Category ID Category
1 Cooking
2 Computers
3 Travel
Copyright © 2020 Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y sus fili ales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios.
Ejercicio 2: Normalizar el ERD de la base de datos académica
Visión general
En esta práctica, utilizará modelos de base de datos no normalizados para crear modelos de base de datos normalizados.
Tareas
1. Para el ERD de la base de datos académica, evalúe cada entidad según las reglas de normalización, identifique los atributos mal
situados y explique qué regla de normalización viola cada atributo mal situado.
PARENT INFORMATION STUDENT
be for ACADEMIC SESSION
# ID # ID
Parent 1 First Name # ID
First Name
Parent 1 Last Name * Name
Last Name
o Parent 2 First Name Registration Year
have
o Parent 2 Last Name Email schedule
Number of Days Off
o Eligibility for Exam
be for be for
STUDENT COURSE DETAIL
EXAM RESULT
* Grade
* Grade
have
be for given in
be for
have
COURSE
# ID have
* Name
give
DEPARTMENT
offer offered by
# ID be for
Name
Head held held
have
be for have
contain
Host Host EXAM
# ID
belong to * Type
ONLINE SEATED
# Logon ID # Building o Start Date
# Room * Name
FACULTY # Date/Time o Description
# ID
First Name
Last Name
Email
Login Date
be for
Login Time
o Details
have
FACULTY COURSE DETAIL
FULL TIME
salary * Contact Hours
insurance plan be for
PART TIME
* hourly rate
Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios
2
Desarrollo
A) Entidad Student
Problemas son :
o Address: Si Address incluye una dirección completa (por ejemplo, con calle, ciudad, estado), entonces no cumple con la
Primera Forma Normal (1NF), ya que no es un atributo atómico. Deberíamos descomponerlo en atributos atómicos
como Street, City, State, y Postal Code.
o Parent ID: Parece referirse a la entidad Parent Information. Si el objetivo es almacenar información de contacto
adicional para el estudiante, Parent ID debería estar en una relación de entidad asociativa (o tabla de relación) entre
Student y Parent Information en lugar de estar directamente en Student. Esto viola la Tercera Forma Normal (3NF)
porque genera una dependencia indirecta..
C) Entidad Faculty
Problemas son :
o Address: Similar al problema en Student, Address debería ser descompuesto en Street, City, State, Postal Code para
cumplir con la Primera Forma Normal (1NF).
o Department ID: Es posible que Faculty y Department tengan una relación de muchos a uno (varios profesores pueden
pertenecer a un departamento). Colocar Department ID directamente en Faculty puede no violar la normalización, pero si
queremos detallar más relaciones entre Faculty y Department, podríamos necesitar una entidad intermedia.
I) Entidad Faculty Course Detail
Problemas son:
o Similar a Student Course Detail, esta entidad parece cumplir con las reglas de normalización. La clave primaria
compuesta (Faculty ID, Course ID) asegura que los atributos Year y Time dependan completamente de esta
combinación, cumpliendo con 1NF, 2NF y 3NF.
J) Entidad Parent Information
Problemas detectados:
o Address: Nuevamente, Address debería dividirse en subcomponentes (Street, City, State, Postal Code) para cumplir con
1NF.
Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios
3
Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios
4
Ejercicio 3: Validar un ERD para la normalización
Tareas
1. Evalúe los siguientes datos no normalizados en la entidad USER y desarrolle un diagrama de relación de entidad que se normaliza
al tercer formato normal.
User User Message Recorded Subject Text Server Server
ID Name ID Date ID Name
2301 Smith 54101 05/07 Meeting Today There is… 3786 IMAP05
2301 Smith 54098 07/12 Promotions I like to… 3786 IMAP05
2301 Smith 54445 10/06 Next Your next… 3786 IMAP05
Assignment
5607 Jones 54512 06/07 Lunch? Can You… 6001 IMAP08
5607 Jones 54101 05/07 Meeting Today There is… 6001 IMAP08
5607 Jones 54660 12/01 Jogging Today? Can you… 6001 IMAP08
7773 Walsh 54101 05/07 Meeting Today There is… 9988 EMEA01
7773 Walsh 54554 03/17 Stock Quote The 9988 EMEA01
latest…
0022 Patel 54101 05/07 Meeting Today There is… 9988 EMEA01
0022 Patel 54512 06/07 Lunch? Can you… 9988 EMEA01
1, Se logra ver que un mismo usuario recibe diferentes mensajes, entonces se debe crear M:M, que serían
USER y Subject
2. Ademas se logra ver que el nombre del servidor solo dependía del Server ID, por lo cual se podría una
nueva entidad para estos dos atributos.
Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios
5
[Link] esquema de colores de un coche incluye especificaciones para el color de la pintura de la carrocería y los colores y materialesdel
interior. Por ejemplo: el esquema de colores "Desert" incluye pintura de color plateado e interiores de piel en color gris; el esquema de
colores "Sunburst" incluye pintura dorada e interiores de piel en color crema. ¿Sigue el siguiente modelo las reglas del tercer formato
normal? Si detecta una violación de las reglas, corríjala.
CAR
# number
make
model
color scheme
paint color
interior color
Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios
6
Ejercicio 4: Recopilar requisitos de base de datos y reglas de negocio
Visión general
En esta práctica, analizará el escenario de caso proporcionado e identificará las reglas de negocio.
Tareas
1. [Link] es una tienda en línea en Internet donde los clientes pueden examinar el catálogo y seleccionar los productos que
deseen.
a. Cada libro tiene un título, ISBN, año y precio. La tienda también conserva la información del autor y del editor de cualquier libro.
b. Para los autores, la base de datos guarda el nombre, la dirección y la URL de su página inicial.
c. Para los editores, la base de datos guarda el nombre, la dirección, el número de teléfono y la URL de su sitio web.
d. La tienda tiene varios almacenes, cada uno de los cuales tiene un código, una dirección y un número de teléfono.
e. El almacén tiene en stock muchos libros. Un libro puede estar en stock en varios almacenes.
f. La base de datos registra el número de copias de un libro almacenadas en stock en varios almacenes.
g. La librería conserva el nombre, la dirección, el ID de correo electrónico y el número de teléfono de sus clientes.
h. Un cliente es propietario de varios carritos de la compra. El carrito de la compra se identifica mediante un Shopping_Cart_ID y
contiene varios libros.
i. Algunos carritos de la compra pueden contener más de una copia del mismo libro. La base de datos registra el número
de copias de cada libro que hay en cualquier carrito de la compra.
j. En ese momento, se necesitará más información para completar la transacción. Normalmente, se le pedirá al cliente que
rellene o seleccione una dirección de facturación, una dirección de envío, una opción de envío e información de pago como el
número de tarjeta de crédito. Se enviará una notificación por correo electrónico al cliente en cuanto se realice el pedido.
Su tarea consiste en identificar las reglas de negocio.
1. Un cliente puede tener cero, uno o varios pedidos.
2. Una dirección_cliente se puede asociar con una sola dirección.
3. Una dirección_cliente se puede asociar con un solo cliente.
4. Un cliente debe tener una dirección de correo electrónico.
5. Una entrega está asociada a un solo pedido.
6. Un pedido debe estar asociado a un único cliente.
7. Un pedido puede estar asociado a uno o varios productos.
8. Un pago debe estar asociado a un único pedido.
9. Un pedido debe estar asociado a un producto válido.
Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios
7
2. Identifique si la descripción proporcionada se puede categorizar como una regla de negocio estructural, de procedimiento o
programática.
Regla de negocio Regla de negocio Regla de negocio Regla de negocio
estructural de procedimiento programática
Todos los profesores
de nuestra escuela
deben disponer de x
un certificado de
enseñanza válido
Cada departamento
x
debe ofrecer un
curso
La aprobación de las
solicitudes de viaje a
un evento debe x
firmarla el gestor de
proyectos del evento
Un cliente puede
realizar varios pagos x
a cuenta
Un operario de
máquinas no puede
trabajar más de 10 x
horas al día
El importe de alquiler
en RENTAL se
calcula a partir de la x
tarifa de alquiler
multiplicada por el
número de días
Un cliente puede x
tener cero, uno o
varios ORDER
El coste total de
RENTAL se calcula a
x
partir de la suma del
importe de seguros,
el importe de alquiler
y el cargo por retraso
La deuda de un
cliente no debe x
superar el límite de
crédito del cliente
Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios
8
Copyright © 2020, Oracle y/o sus filiales. Todos los derechos reservados. Oracle y Java son marcas comerciales registradas de Oracle y/o sus filiales. Todos los demás nombres pueden ser marcas
comerciales de sus respectivos propietarios