73
CC3201-1 BASES DE D ATOS O TOÑO 2017 Clase 6: Actualizaciones, Restricciones, Formas Normales Aidan Hogan [email protected]

CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

CC3201-1BASES DE DATOS

OTOÑO 2017

Clase 6: Actualizaciones, Restricciones, Formas Normales

Aidan Hogan

[email protected]

Page 2: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Las preguntas de hoy

¿Pero cómo se puede crear y actualizar las tablas?

¿Y cómo se puede saber si es un buen diseño relacional o no?

Page 3: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: GESTIONAR Y CREAR TABLAS

Capítulo 3.1.1 | Ramakrishnan / Gehrke

Page 4: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Esquema

¿Para que sirven los esquemas?

Podemos configurar agrupaciones de tablas usando esquemas …

Page 5: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Privilegios de Esquema

Page 6: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Crear tablas

Page 7: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Borrar tablas

¿Hay que poner el esquema cada vez?

Page 8: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Camino de esquema

Seleccionará el primer esquema en el camino.P. ej., si hay SistemaSolar.Aterrizaje y public.Aterrizaje,

leerá de la primera tabla

Page 9: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: ACTUALIZAR TABLAS

Capítulo 3.1.1 | Ramakrishnan / Gehrke

Page 10: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Insertar tuplas

Page 11: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Insertar tuplas

Page 12: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Insertar tuplas

Page 13: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Insertar tuplas

Page 14: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Insertar tuplas

Page 15: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Insertar tuplas

Page 16: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Editar tuplas

Page 17: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Borrar tuplas

Page 18: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Borrar columnas

Page 19: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Crear columnas

Page 20: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: Modificar columnas

Page 21: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Postgres: Cargar datos

Especifico de Postgres

Concatena los datos¿Algún problema aquí?

Page 22: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

SQL: RESTRICCIONES(Integrity Constraints)

Capítulo 5.7 | Ramakrishnan / Gehrke

Page 23: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Un programador freelance abre una cuenta

Page 24: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Y (por supuesto) hay una base de datos

Page 25: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Modelo Relacional: Restricciones

Restricciones (de integridad):

son restricciones formales

que imponemos a un esquema

que todas sus instancias

deben satisfacer

Page 26: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Restricciones básicas: llaves, nulos, domino

Page 27: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Restricciones básicas: valores por defecto

Page 28: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Restricciones de unicidad

La llave primaria implica una restricción de unicidad. La unicidad representa una llave candidata: se pueden tener varias llaves candidatas pero una sola llave primaria.

Page 29: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Nombrar (y borrar) restricciones

Más fácil cambiar restricciones posteriormente.

Si hay una violación, el mensaje de error será más intuitiva si las restricciones

tienen nombres intuitivos.

Page 30: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Restricciones de llaves foráneas

Cada cuenta en Ingreso tiene que estar en Cuenta.número.

Page 31: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Restricciones sobre varias columnas

Page 32: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Restricciones sobre varias tablas

Page 33: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Restricciones sobre varias tablas (!)

¿Por qué la ponemos en Ingreso cuando involucra Gasto igualmente? Por

ejemplo, si agregáramos la milésima tupla (con la misma cuenta y fecha) a Gasto, ¡no tendríamos una violación!

¿Algún problema aquí? …

¿Alguna solución?

Duplicar la restricción en Gasto o …

Page 34: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Asertos: Restricciones independientes

La restricción no depende de ni una tabla ni la otra.

Rechazará alguna operación en el esquema que violaría la restricción

… pero puede ser más costosa/compleja así.

Page 35: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

¡Garantizar integridad con restricciones!

Page 36: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Postgres no permite consultas anidadas en CHECK ni asertos

(son caros!)

Page 37: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

DEFINIR DOMINIOS Y TIPOS

Page 38: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Crear dominios: VARCHAR

Page 39: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Crear dominios: INTEGER

Page 40: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Dominios: compatibles con el tipo base

Se puede comparar valores del domino con otros valores como fuera del tipo base

Page 41: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Tipos: son distintos a otros tipos

No se puede comparar valores del nuevo tipo con valores de otros tipos (solo entre sí).

Page 42: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Tipos: son distintos a otros tipos

No se puede usar funciones del tipo base con valores del nuevo tipo.

Page 43: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Tipos son estándares (en SQL)

Pero Postgres solo suporte tipos “complejos”

Page 44: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Tipos: un tipo compuesto

Page 45: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Tipos: un tipo compuesto

Page 46: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

FORMAS NORMALES

Capítulo 12 | Ramakrishnan / Gehrke

Page 47: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Todo bien

¿Pero si un cliente puede tener varios números de teléfono?

Page 48: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

UNF: Forma No Normalizada (UnNormalised Form)

UNF:

Varias multiplicidades de valores en una columna de la tabla

Page 49: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

1NF: Primera Forma Normal (First Normal Form)

1NF:

Un valor en cada celda de la tabla

Page 50: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

1NF: Primera Forma Normal (First Normal Form)

¿Algún problema aquí? …

Redundancia

Page 51: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

1NF: Primera Forma Normal (First Normal Form)

¿Algún problema aquí? …

Anomalía de actualización:Si quiero actualizar la dirección de Rankine, tendré que

actualizar varias tuplas (y la base de datos será inconsistente entre las actualizaciones)

Page 52: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

1NF: Primera Forma Normal (First Normal Form)

¿Algún problema aquí? …

Anomalía de inserción:No podemos insertar un nuevo cliente a la tabla hasta

tengamos un número de teléfono

Sí, se puede usar un valor nulo o un valor vacío, pero este tipo de solución no cuenta aquí …

si es la única solución, todavía será considerado una anomalía

Page 53: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

1NF: Primera Forma Normal (First Normal Form)

¿Algún problema aquí? …

Anomalía de borrado:Si el número de teléfono ahora está invalido, tendremos que

borrar la fila entera con la dirección, etc.

Sí, se puede reemplazar el valor con un nulo o un valor vacío, pero este tipo de solución no cuenta aquí …

si es la única solución, todavía será considerado una anomalía

Page 54: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

1NF: Primera Forma Normal (First Normal Form)

¿La solución? …

Crear otra tabla con rut y fono

¿Pero cómo podemos definir el problema aquí? …

Page 55: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?
Page 56: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Modelo Relacional: Restricciones (Llaves)

Un conjunto de atributos de una relación

forma una llave candidata

si es una súper llave

y no hay un subconjunto propio de esos atributos

que es una súper llave

Page 57: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Modelo Relacional: Restricciones (Llaves)

¿Hay otra llave candidata?

Probablemente …

… o puede ser …

(si no tenemos un tipo como Gengis Kan)

Page 58: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Modelo Relacional: Restricciones (Llaves)

Un atributo es primo

si está en alguna llave candidata

Page 59: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Modelo Relacional: Restricciones (Dependencias funcionales)

Dado una relación

y dos conjuntos de atributos X, Y

X determina funcionalmente Y

si y solo si

cada valor de X en la relación

tiene asociado un solo valor de Y

Page 60: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Modelo Relacional:Restricciones (Dependencias funcionales)

¿Hay una dependencia funcional aquí?

(al menos aquí)

Page 61: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?
Page 62: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

1NF: Primera Forma Normal (First Normal Form)

¿La solución? …

Crear otra tabla con rut y fono

¿Pero cómo podemos definir el problema aquí? …

… pero rut es sólo parte de una llave candidata

Page 63: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

2NF: Segunda Forma Normal (Second Normal Form)

2NF: Satisface 1NF y …

No existe:

tal que:

A sea un subconjunto propio de una llave candidata

y b sea un atributo no primo.

Page 64: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

2NF: Segunda Forma Normal (Second Normal Form)

¿Está en 2NF? …

¡Sí!

¿Se puede tener anomalías? …

¡Sí!(p.ej. podríamos tener varios nombre_destinos para el mismo rut_destino)

¿Dónde está el problema? …

Pero cuenta_destino no es primo

Page 65: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

3NF: Tercera Forma Normal (Third Normal Form)

3NF: Satisface 2NF y …

No existe:

tal que :

z sea no primo

y y

(Se asume que haya una persona por cuenta destina)

Page 66: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

3NF: Tercera Forma Normal (Third Normal Form)

(Se asume que cada cuenta tenga sólo una persona)

¿Está en 3NF? …

¡Sí!

¿Por qué? …

… pero rut_destino es un atributo primo …es una llave candidata

¿Hay una posibilidad de anomalías? …

¡Sí! La misma cuenta destina con dos ruts diferentes.

Page 67: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

BCNF: Forma Normal de Boyce–Codd(Se asume que cada cuenta tenga sólo una persona)

BCNF: Satisface 1NF y …

Para cada:

X es una súper llave

o

Page 68: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Otras Formas Normales

BCNF: Satisface 1NF y …

Para cada:

X es una súper llave

o

¿Hay formas normales más fuertes que BCNF? …

¡Sí! 4NF, 5NF, 6NF, …Pero las anomalías posibles son más y más raras …

… entonces pararemos aquí con BCNF.

Page 69: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Otras Formas Normales

BCNF: Satisface 1NF y …

Para cada:

X es una súper llave

o

¿Qué piensan ustedes?¿Son útiles las formas normales?

¿Siempre hay que tener (al menos) BCNF?

Page 70: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

A veces, los nulos no son tan malos

Page 71: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

LA PROXIMA VEZ, CONTINUAREMOS CON:

OPTIMIZACIÓN DE CONSULTAS

Capítulo 9+ | Ramakrishnan / Gehrke

Page 72: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Calendario

• Censo: 19 de abril

• Auxiliar: 21 de abril (SQL)

• Clase: 24 de abril (optimización con Sebastián)

• Lab: 26 de abril (optimización)

• Auxiliar: 28 de abril (preparación pa’l control)

• Feriado: 1 de mayo

• Lab: 3 de mayo (programación)

• Control: 5 de mayo

Page 73: CC3201-1 B DATOS O 2017 Clase 6: Actualizaciones ...aidanhogan.com/teaching/cc3201-1-2017/lectures/BdD2017-06.pdf · ¿Y cómo se puede saber si es un buen diseño relacional o no?

Preguntas?