Home Bases de Datos El Modelo Relacional Esquema de la base de datos

PostHeaderIcon Esquema de la base de datos

Usar puntuación: / 4
MaloBueno 

Vamos a ver las principales restricciones del modelo relacional. Existen diferentes restricciones que a la hora de crear una base de datos relacional hay que tener en cuenta. El modelo relacional impone en resumen dos restricciones

1. Las inherentes al modelo, que diferencian una relación de una tabla:

  • No pueden haber dos tuplas iguales.
  • El orden de las tuplas es irrelevante.
  • Los atributos tienen un único valor.
  • La clave primaria no puede tener valor nulo.

2. Las semánticas o de usuario

  • (PRIMARY KEY): Debe haber uno o varios atributos como clave primaria.
  • (UNIQUE) se usa para definir claves alternativas (que obviamente no se pueden repetir)
  • (NOT NULL), obligatoriamente permite declarar atributos que no pueden tener valores nulos
  • (FOREIGN KEY), Permite enlazar relaciones, mediante claves ajenas, de una BD.
  • Restricciones de verificación y disparadores.

El concepto de Foreign Key (clave ajena) es un concepto que merece especial atención. Supongamos que un alumno se matricula de un curso (hablamos de una relación M:M dónde, consecuentemente se crea una tabla nueva) y que éste finalmente no se da. ¿Qué ocurre con el alumno?. El modelo relacional permite hasta cuatro maneras de borrado y/o actualización:

  • Borrado y/o modificación en cascada (CASCADE), el padre afecta a sus hijos. Al borrarse la tabla se borra también todas las referencias. En nuestro caso al desparecer el curso, también desaparecería el alumno en la relación.
  • Borrado y/o modificación restringido (RESTRICT), si hay hijos no se puede modificar ni eliminar el padre. Es decir, si la tabla tiene contenido no se puede ni modificar ni eliminar la tabla. En nuestro ejemplo, no se podría borrar el curso mientras hayan alumnos matriculados.
  • Borrado y/o modificación con puesta a nulos (SET NULL), clave ajena de la tabla referencia a nulo. Es decir, que si borras la tabla de esa clave ajena, donde aparezca como clave ajena aparecerá NULL. En nuestro caso el curso del alumno aparecería a NULL en la relación
  • Borrado y/o modificación con puesta de valor por defecto (SET DEFAULT), si borras y/o modificas, se pondría un valor predefinido por defecto. En nuestro ejemplo definiríamos que el curso por defecto sería el curso 3. Al eliminar el curso, todos los alumnos del curso eliminado quedarían automáticamente matriculados en el curso "3".

Restricciones de verificación (Check):

Son las restricciones que deben cumplir los valores del atributo. Cada vez que se realice una inserción o una actualización de datos se comprueba si los valores cumplen la condición.

Aserciones (ASSERTION), es igual que las restricciones (CHECK) pero afectando a más de una relación. Se establece sobre elementos de distintas relaciones. Su definición debe tener un nombre. Se establece mientras se crea la tabla.

Disparadores (TRIGGER), las restricciones anteriores son declarativas, sin embargo, este tipo es procedimental. El usuario escribe el procedimiento a aplicar dependiendo del resultado de una determinada condición. Los disparadores están soportados a partir de los estándares SQL3. Se establece después de definir la tabla.

Planteemos un ejemplo: se crea un disparador que audita las inserciones y los borrados de la tabla EMPLE. Cada vez que se borra o actualiza en la tabla, en otra tabla AUDITAREMPLE se inserta la fecha y hora de la operación con el número y el nombre del empleado afectado en la operación que se realiza.


 

Escribir un comentario


Código de seguridad
Refescar

PostHeaderIcon Más Comentado

PostHeaderIcon Últimos Comentarios

mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterHoy140
mod_vvisit_counterAyer750
mod_vvisit_counterEsta semana890
mod_vvisit_counterLa semana pasada4692
mod_vvisit_counterEste mes23906
mod_vvisit_counterEl mes pasado46803
mod_vvisit_counterTodos los días1476279

We have: 61 guests online
Hoy es: Ene 23, 2018