![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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/1.jpg)
CC3201-1BASES DE DATOS
OTOÑO 2017
Clase 6: Actualizaciones, Restricciones, Formas Normales
Aidan Hogan
![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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/2.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/3.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/4.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/5.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/6.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/7.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/8.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/9.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/10.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/11.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/12.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/13.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/14.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/15.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/16.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/17.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/18.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/19.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/20.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/21.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/22.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/23.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/24.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/25.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/26.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/27.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/28.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/29.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/30.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/31.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/32.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/33.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/34.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/35.jpg)
¡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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/36.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/37.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/38.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/39.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/40.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/41.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/42.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/43.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/44.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/45.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/46.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/47.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/48.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/49.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/50.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/51.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/52.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/53.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/54.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/55.jpg)
![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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/56.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/57.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/58.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/59.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/60.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/61.jpg)
![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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/62.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/63.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/64.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/65.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/66.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/67.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/68.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/69.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/70.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/71.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/72.jpg)
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?](https://reader033.vdocumento.com/reader033/viewer/2022052019/6032ea6aeef82122804d52f8/html5/thumbnails/73.jpg)
Preguntas?