Third Normal Form (3NF)


Transitive Dependency

It occurs when there is an FD between a non-key attribute and another non-key attribute.
Esta ocurre cuando existe una FD entre un atributo que no forma parte de la llave primaria y otro atributo que no pertenece a ésta.

Third Normal Form (3NF)

To be in 3NF, a table:
  • must be in 2NF
  • contains no transitive dependencies

Para cumplir con 3NF, una tabla
  • debe cumplir con 2NF
  • no debe contener dependencia transitivas

Tip
If some (or one) of the non-key attributes depend on another non-key attribute, the table is not in 3NF.
Si alguno, o algunos de los atributos que no pertenecen a la llave primaria dependen de otros atributos que tampoco pertenecen a la llave primaria, la tabla no cumple con 3NF.

Problem 1
Find if the bank_p table is in 3NF (proof your result).
Encuentre si la tabla bank_p esta en 3NF (pruebe su resultado).

bank_p

Solution 1
First the table is in 1NF and in 2NF. Second, the bank_p table has a primary key (account_id) with a single attribute. Thus, all non-key attributes must be fully functionally dependent upon it. However, we have a problem with this table in that branch information is replicated for all accounts at a particular branch. This is due to the FDs upon branch:

branch → address, manager_id .

Thus the table is not in 3NF.
Primero la tabla esta en 1NF y en 2NF. Segundo, la llave primaria de la tabla bank_p tiene un sólo atributo, account_id. De aquí sigue que todos los atributos que no forman parte de la llave primaria deben ser dependientes en forma funcional completa en la llave primaria. Sin embargo, hay un problema en la tabla ya que la información de la sucursal está replicada para todas las cuentas que se encuentran en una sucursal en particular. Esto es debido a las FDs que existen con sucursal (branch):

branch → address, manager_id .

Así la tabla no está en 3NF.

Tip
When we find a transitive dependency, those attributes that have a transitive dependency must be removed. Then a new table (consisting of these removed attributes along with the attribute upon which they are dependent) must be created. The attribute on which the dependence exists becomes the primary key for the new table and remains as a foreign key in the original table.
Cuando se encuentra una dependencia transitiva, se deben remover los atributos que originan esta dependencia. Para esto se debe crear una nueva tabla la cual contiene estos atributos así como el atributo de la cual dependen éstos. El atributo del que dependen los otros atributos debe ser la llave primaria de la nueva tabla y una llave extranjera de la tabla original.

Problem 2
If the bank_p table (of the previous problem) is not in 3NF, then modify the table so that it can be in 3NF.
Si la tabla bank_p (del problema previo) no está en 3NF, modifique la tabla para que pueda estar.

Solution 2
We must break the FD branch → address, manager_id as shown in the figure.
Se debe romper la FD branch → address, manager_id como se muestra en la figura.

bank_p_split

Tip
3NF is concerned with transitive dependencies between the non-key attributes. A table may still have redundancy problems in 3NF as it ignores relationships between or within candidate keys. Most database designers think that the third normal form gives a good database design.
3NF se encarga de las dependencias transitivas que no forman parte de la llave primaria. Aun cuando una tabla cumple con 3NF, ésta puede tener problemas de redundancia, la mayoría de los diseñadores de bases de datos consideran que 3NF proporciona un diseño de bases de datos bastante bueno.

Tip
Once all attributes in a table are part of a candidate key, it is not convenient to split the table in more tables.
Una vez que en una tabla todos los atributos son llaves candidato, no es conveniente romper la tabla en otras.

Problem 3
Explain when it is convenient to atomize an address (1NF) by creating the tables:
  • city table (columns: city_id, name, state_id)
  • street table (columns: street_id, name, city_id)
  • state table (columns: state_id, name)
Explain when it is not convenient to atomize an address.
Explique cuando y cuando no se debe atomizar un domicilio (1NF). Indicando si se crean las tablas:
  • tabla ciudad (columnas: ciudad_id, nombre, estado_id)
  • tabla calle (columnas: calle_id, nombre, ciudad_id)
  • tabla estado (columnas: estado_id, nombre)

Problem 4
Indicate whether the following statement is true or false: After splitting the bank_p table, the new pair of tables is in 3NF. The only attributes that are replicated are the foreign keys that allow establishing the relationships between both tables. From a practical point of view, this kind of replication is necessary and cannot be removed.
Diga si es cierto o falso: Después de dividir la tabla bank_p, se tiene un par de tablas en 3NF. Los únicos atributos que están replicados son las llaves extranjeras que permiten establecer la relación entre las tablas. En forma práctica, este tipo de replicación es necesaria y no puede eliminarse.

Problem 5
Indicate whether the following statement is true or false: After splitting the bank_p table, if each manager can manage only one branch and it is not allowed that two branches have the same address, then there are three candidate keys: branch, address, and manager_id. Futhermore, the following FDs hold valid:
branch → address, manager_id

address → branch, manager_id

manager_id → address, branch .
Diga si es cierto o falso: Después de dividir la tabla bank_p, si cada gerente puede administrar solamente una sucursal y no se permite que dos sucursales tengan la misma dirección, entonces se tienen tres llaves candidato: branch, address y manager_id. Además se tienen las siguientes FDs:
branch → address, manager_id

address → branch, manager_id

manager_id → address, branch .

Problem 6
In what cases is a table automatically in 2NF?
En qué casos una tabla se encuentra automáticamente en 2NF?

Problem 7
In what cases is a table automatically in 3NF?
En qué casos una tabla se encuentra automáticamente en 3NF.

Problem 8
Suppose that the same course can be delivered at the same time by different professors. Suppose also that the same professor can be delivered the same class at different times.
  1. Determine the primary key on the course table.
  2. Is the table in 1NF (proof your result)? If not, modify the table so that it is in 1NF.
  3. Is the table in 2NF (proof your result using FDs)? If not, indicate the FD's that need to be removed and remove them.
  4. Is the table in 3NF (proof your result using FDs)? If not, indicate the FD's that need to be removed and remove them.
  5. Create a database diagram of your final design indicating primary and foreign keys, as well as relationships among tables
  6. Write a SQL script using Microsoft SQL server to create your final design using the name escuela for the database and escuela.sql for the file
  7. .

Suponga que el mismo curso puede ser impartido a la misma hora pero por profesores distintos. Suponga también que el mismo profesor puede impartir el mismo curso a una hora diferente.
  1. Determine la llave primaria de la tabla course.
  2. Indique si la tabla cumple con 1NF (demuestre su resultado). Si no cumple modifique la tabla para que cumpla.
  3. Indique si la tabla cumple con 2NF (demuestre su resultado usando FDs). Si no cumple modifique la tabla para que cumpla.
  4. Indique si la tabla cumple con 3NF. (demuestre su resultado usando FDs). Si no cumple modifique la tabla para que cumpla.
  5. Haga un diagrama para mostrar su diseño indicando claramente llaves primarias y extranjeras, así como las relaciones entre las tablas.
  6. Escriba un script SQL en Microsoft SQL server para crear y llenar su diseño final, llame a la base de datos escuela y al archivos escuela.sql

course

Problem 9
The table employee_x has information about each employee.
  1. Indicate some candidate keys on the employee_x table.
  2. Determine the primary key on the employee_x table.
  3. Is the table in 1NF (proof your result)? If not, modify the table so that it is in 1NF.
  4. Determine the primary key on the new table, it applicable.
  5. Is the table in 2NF (proof your result using FDs)? If not, indicate the FD's that need to be removed and remove them.
  6. Is the table in 3NF (proof your result using FDs)? If not, indicate the FD's that need to be removed and remove them.
  7. Create a database diagram of your final design indicating primary and foreign keys, as well as relationships among tables
  8. Write a SQL script using Microsoft SQL server to create your final design using the name company for the database and company.sql for the file
  9. .
If you may any assumptions, you must indicate them in your result.
La tabla employee_x tiene información de cada empleado.
  1. Indique las llaves candidato en la tabla employee_x.
  2. Determine la llave primaria de la tabla employee_x.
  3. Indique si la tabla cumple con 1NF (demuestre su resultado). Si no cumple modifique la tabla para que cumpla.
  4. Determine la llave primaria de la nueva tabla en caso de ser necesario.
  5. Indique si la tabla cumple con 2NF (demuestre su resultado usando FDs). Si no cumple modifique la tabla para que cumpla.
  6. Indique si la tabla cumple con 3NF. (demuestre su resultado usando FDs). Si no cumple modifique la tabla para que cumpla.
  7. Haga un diagrama para mostrar su diseño indicando claramente llaves primarias y extranjeras, así como las relaciones entre las tablas.
  8. Escriba un script SQL en Microsoft SQL server para crear y llenar su diseño final, llame a la base de datos company y al archivos company.sql
Si usted asume alguna restricción, usted debe indicarla en su resultado.

employee_x

Tip
The example below illustrates how it can quickly detect if a table is in 3NF or not.
El ejemplo debajo indica cómo se puede detectar en forma rápida si una tabla se encuentra en 3NF o no.

bank_3NF

Problem 10
Discuss (a) when a Linking table is in 2NF, (b) when a linking table is in 3NF.
Discuta (a) cuando una tabla conectora está en 2NF, (b) cuando una tabla conectadora está en 3NF.

© Copyright 2000-2019 Wintempla selo. All Rights Reserved. Sep 05 2019. Home