[3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez,...

31
GBD-Unidad 3-Modelo Relacional Jorge Sánchez, www.jorgesanchez.net @jorgesancheznet [3.3] Restricciones Unidad 3) Modelo Relacional Gestión de Bases de Datos, ciclo de ASIR

Transcript of [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez,...

Page 1: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

[3.3] Restricciones

Unidad 3) Modelo RelacionalGestión de Bases de Datos, ciclo de ASIR

Page 2: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Inherentes

•Cada tabla tiene un nombre distinto•Cada atributo de la tabla toma un solo valor en cada fila•Cada atributo tiene un nombre distinto en cada tabla (aunque puede coincidir en tablas distintas)•Cada fila es única (no hay tuplas duplicadas)•El orden de los atributos no importa•El orden de las filas no importa

Page 3: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Semánticas

•Clave principal•Unicidad•Obligatoriedad•Clave candidata• Integridad referencial•Validación•Triggers

Page 4: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de clave principal.(Primary Key)

•Sirve para indicar las columnas que sirven para identificar a cada fila•Obliga a rellenar valores obligatoriamente en cada fila•No permite repetir valores en esos atributos•Claves principales ideales:• Textos cortos y de tamaño fijo• Números• Fechas

Page 5: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de clave principal.(Primary Key)

cod_trabajador DNI Teléfono Nombre Apellido1 Apellido2

1 12345678Z 992100200 Álvaro Garrigues Crespo

2 X7654321J 999123456 Youssuf Belahbib

3 23443298L 998765432 Sandra Fernández Colomer

4 33344455K 997345212 Marcos Serna Villegas

5 22211991V Marisa Losada Pereira

CandidatasPrimaria

Page 6: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de unicidad(Unique)

•Los atributos marcados así no pueden repetir valores

Page 7: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de unicidad(Unique)

cod_trabajador DNI Teléfono Nombre Apellido1 Apellido2

1 12345678Z 992100200 Álvaro Garrigues Crespo

2 X7654321J 999123456 Youssuf Belahbib

3 23443298L 998765432 Sandra Fernández Colomer

4 33344455K 997345212 Marcos Serna Villegas

5 22211991V Marisa Losada Pereira

Unique

Page 8: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de obligatoriedad(Not Null)

•Los atributos marcados así deben obligatoriamente de rellenarse siempre

Page 9: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de obligatoriedad(Not Null)

cod_trabajador DNI Teléfono Nombre Apellido1 Apellido2

1 12345678Z 992100200 Álvaro Garrigues Crespo

2 X7654321J 999123456 Youssuf Belahbib

3 23443298L 998765432 Sandra Fernández Colomer

4 33344455K 997345212 Marcos Serna Villegas

5 22211991V Marisa Losada Pereira

NOT NULL

Page 10: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de clave alternativa(Alternate Key)

•En casi ningún gestor de base de datos existe como tal•Los atributos que son claves alternativas se marcan con restricción Unique y Not Null

Page 11: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de clave alternativa(Alternate Key)

cod_trabajador DNI Teléfono Nombre Apellido1 Apellido2

1 12345678Z 992100200 Álvaro Garrigues Crespo

2 X7654321J 999123456 Youssuf Belahbib

3 23443298L 998765432 Sandra Fernández Colomer

4 33344455K 997345212 Marcos Serna Villegas

5 22211991V Marisa Losada Pereira

UniqueNot Null

Page 12: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key)

•Marca las claves secundarias•Restringe los valores de modo que las claves secundarias no pueden tomar valores que no existan en la clave principal•No podremos, p. ej., marcar una nota a un nº de alumno que no exista

Page 13: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key).

Alumno Cod Alumno

Juanjo 1

Ana 2

Sonia 3

Cod alumno Cod asignatura Nota15 1 91 2 91 3 72 1 82 2 62 3 53 2 73 3 1

?

Page 14: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key). Problemas

•Si borramos o modificamos claves principales, sus secundarias relacionadas quedarían sin cumplir la restricción•Para gestionar este problema las bases de datos tienen políticas especiales al eliminar y al modificar (las políticas pueden ser distintas)

Page 15: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key). Problemas•Políticas:•No hacer nada (Do Nothing). No podremos eliminar

y/o modificar la clave principal•Cascada (Cascade). Se modifican o eliminan todas las

claves secundarias relacionadas•Poner nulos (Set Null). Las claves secundarias se

ponen con valor nulo•Valor por defecto (Set Default). Las claves

secundarias se marcan con un valor por defecto

Page 16: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key). Actualizar en cascada

Alumno Cod Alumno

Juanjo 1

Ana 2

Sonia 3

Cod alumno Cod asignatura Nota1 1 91 2 91 3 72 1 82 2 62 3 53 2 73 3 1

Page 17: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key). Actualizar en cascada

Alumno Cod Alumno

Juanjo 1

Ana 2

Sonia 3

Cod alumno Cod asignatura Nota1 1 91 2 91 3 72 1 82 2 62 3 53 2 73 3 1

Actualizar en cascada

Page 18: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key). Actualizar en cascada

Alumno Cod Alumno

Juanjo 7

Ana 2

Sonia 3

Cod alumno Cod asignatura Nota1 1 91 2 91 3 72 1 82 2 62 3 53 2 73 3 1

Actualizar en cascada

Page 19: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key). Actualizar en cascada

Alumno Cod Alumno

Juanjo 7

Ana 2

Sonia 3

Cod alumno Cod asignatura Nota7 1 97 2 97 3 72 1 82 2 62 3 53 2 73 3 1

Actualizar en cascada

Page 20: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key). Eliminar en cascada

Alumno Cod Alumno

Juanjo 1

Ana 2

Sonia 3

Cod alumno Cod asignatura Nota1 1 91 2 91 3 72 1 82 2 62 3 53 2 73 3 1

Page 21: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key). Eliminar en cascada

Alumno Cod Alumno

Juanjo 1

Ana 2

Sonia 3

Cod alumno Cod asignatura Nota1 1 91 2 91 3 72 1 82 2 62 3 53 2 73 3 1

Page 22: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key). Eliminar en cascada

Alumno Cod Alumno

Juanjo 1

Ana 2

Sonia 3

Cod alumno Cod asignatura Nota1 1 91 2 91 3 72 1 82 2 62 3 53 2 73 3 1

Page 23: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key). Nulos

Alumno Cod Alumno

Juanjo 1

Ana 2

Sonia 3

Cod alumno Cod asignatura Nota1 1 91 2 91 3 72 1 82 2 62 3 53 2 73 3 1

Page 24: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key). Nulos

Alumno Cod Alumno

Juanjo 1

Ana 2

Sonia 3

Cod alumno Cod asignatura Nota1 1 91 2 91 3 72 1 82 2 62 3 53 2 73 3 1

Page 25: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key). Nulos

Alumno Cod Alumno

Juanjo 1

Ana 2

Sonia 3

Cod alumno Cod asignatura Nota(null) 1 9(null) 2 9(null) 3 72 1 82 2 62 3 53 2 73 3 1

Page 26: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key). Valor por defecto

Alumno Cod Alumno

Juanjo 1

Ana 2

Sonia 3

Desconocido 999

Cod alumno Cod asignatura Nota1 1 91 2 91 3 72 1 82 2 62 3 53 2 73 3 1

Page 27: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key). Valor por defecto

Alumno Cod Alumno

Juanjo 1

Ana 2

Sonia 3

Desconocido 999

Cod alumno Cod asignatura Nota1 1 91 2 91 3 72 1 82 2 62 3 53 2 73 3 1

Page 28: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de integridad referencial(Foreign Key). Nulos

Alumno Cod Alumno

Juanjo 1

Ana 2

Sonia 3

Desconocido 999

Cod alumno Cod asignatura Nota999 1 9999 2 9999 3 72 1 82 2 62 3 53 2 73 3 1

Page 29: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de Integridad Referencial.Solución de problemas

•Lo habitual en casi todos los sistemas para solucionar el problema de modificar o eliminar claves primarias son los cambios en cascada o bien no hacer nada

Page 30: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Restricción de validación(Check)

•Prohíbe que se añadan a la base de datos, valores que incumplan una determinada condición•Por ejemplo que la edad sea menor de 18 años

Page 31: [3.3] Restricciones - Jorge Sanchez · GBD-Unidad 3-Modelo Relacional Jorge Sánchez, @jorgesancheznet Triggers •Se trata de código que se ejecuta cuando ocurre un determinado

GBD-Unidad 3-Modelo RelacionalJorge Sánchez, www.jorgesanchez.net

@jorgesancheznet

Triggers

•Se trata de código que se ejecuta cuando ocurre un determinado evento en la base de datos•Permite imponer condiciones muy elaboradas y complicadas (pero útiles):•No dejar añadir un DNI cuya letra no se corresponda con

los números (tras aplicar la compleja fórmula del DNI)•No permitir añadir datos entre las 3 y las 6 de la tarde