Análise e deseño detallado de aplicacións de informática e de xestión/Restricións do modelo relacional

En Galilibros, o Wikibooks en galego.


Como en todo modelo de datos, os elementos non permitidos na estrutura do modelo relacional son de dous tipos: restricións inherentes e restricións semánticas.

Restricións inherentes[editar]

Son as restricións derivadas da propia estrutura do modelo, que non teñen que ser definidas polo o usuario e impoñen limitacións á hora de modelar o noso mundo real.

  1. A estrutura do modelo relacional, ao dispoñer unicamente dun construtor, a relación, non permite diferenciar entre obxectos e asociacións entre eles. É habitual facer esta distinción no mundo real e resulta bastante evidente para os usuarios.
  2. Outras restricións inherentes do modelo relacional proveñen da súa propia definición matemática, xa que, ao definirse a relación coma un conxunto, non se permite a existencia de tuplas duplicadas (un conxunto non pode ter elementos iguais) e de aí a obrigatoriedade dunha clave primaria ou identificador (conxunto mínimo de atributos que identifican de forma unívoca as tuplas dunha relación).
  3. Tamén a definición matemática de relación impón restricións inherentes coma a prohibición de que o cruce dunha fila e unha columna haxa máis dun valor, é dicir, as relacións son táboas planas (de dúas dimensións) non admitíndose os grupos repetitivos. Ademais, a orde das tuplas non é significativa (a orde dos elementos dun conxunto é irrelevante).
  4. Integridade da entidade. Trátase dunha restrición inherente, debida asemade ña necesidade de que todas as tuplas dunha relación sexan distintas, a cal establece que: «ningún atributo que forme parte da clave primaria pode tomar valores nulos». O “valor nulo” dun atributo representa información descoñecida, inaplicable, etc. Polo tanto, se algún dos atributos que forman parte da clave primaria tomase valores nulos, algunhas das tuplas da relación non poderían identificarse, polo que se violaría a condición de que o valor clave debe ser único para cada tupla.

Restricións semánticas[editar]

As restricións semánticas son facilidades proporcionadas polo modelo para poder recoller no esquema da relación a semántica do universo do discurso que estamos modelando. Son restricións que ten que definir o deseñador para que o esquema reflicta coa maior exactitude posible o mundo real. De aí a importancia das restricións no deseño de bases de datos.

No modelo relacional, de forma análoga ao que ocorre en xeral nun modelo de datos, unha restrición de integridade é unha regra “ECA” (evento, condición, acción) onde o evento ñe unha operación de actualización (inserción, borrado ou modificación), a condición pode definirse coma unh predicado sobre un conxunto de atributos, de tuplas ou de dominios, que debe ser verificado polos correspondentes elementos para que constitúan unha expresión válida do esquema, e a acción pode ser de rexeitamento da operación ou calquera outra, determinada ben polo modelo ben polo usuario. A acción efectúase se unha operación de actualización intenta violar a condición.

A posta en funcionamento das restricións de integridade nun sistema relacional esixe facilidades de definición de restricións, así coma procedementos que impidan que na base de datos aparezan estados inconsistentes, é dicir, procedementos que poñan en marcha as correspondentes accións a fin de manter a consistencia.

Imos describir as restricións semánticas do modelo relacional dividíndoas en primeiro lugar segundo unha clasificación baseada nos elementos aos que afectan, e logo farase vento tres tipos de restricións:

  1. condición e acción específicas,
  2. condición xeral e acción específica e
  3. condición e acción xerais.

Clasificación das restricións segundo os elementos aos que afecta a condición[editar]

A condición das restricións semánticas nun modelo de datos hai que definila sempre en función dos elementos do modelo, e así no modelo relacional teremos “restricións internas de relacións” que afectan aos atributos dunha soa relación (coma a de clave primaria, unicidade, prohibición de nulos, etc.), “restricións entre relacións” que están definidas sobre os atributos de máis dunha relación (como a integridade referencial), as que se definen sobre as tuplas dunha relación (por exemplo: cardinalidade) e as definidas sobre dominios (coma a verificación sobre os valores dun dominio).

Por tanto, segundo os elementos sobre os que se defina a condición das restricións, estas pódense clasificar en:

Restrición entre relacións sobre atributos[editar]

Entre estas restricións están as de unicidade dun ou varios atributos cuxos valores non poden repetirse nas distintas tuplas dunha relación.

Restrición interna dunha relación sobre tuplas[editar]

É un exemplo disto a comprobación de que a cardinalidade dunha relación non supera un determinado valor.

Restrición entre relacións[editar]

Restricións deste tipo son as claves alleas e as asercións que se definen sobre máis de unha táboa. Nestas últimas, o seu intento de violación por unha operación de actualización leva consigo o rexeitamento da operación, que non chega efectuarse.

Restrición sobre dominios[editar]

Unha restrición de verificación sobre os valores dun dominio sería un exemplo deste tipo de restricións.

Restricións de condición e acción específicas[editar]

Entre estas restricións atópanse, no modelo relacional, ademais das de unicidade e obrigatoriedade antes mencionadas, as de claves candidata e allea que veremos a continuación.

Unha clave candidata dunha relación é un conxunto non baleiro de atributos (descritor) que identifican unívoca e minimamente cada tupla dunha relación.

En toda relación sempre hai, polo menos, unha clave candidata, ca que o conxunto de atributos que constitúe a relación gozará desa propiedade de unicidade (pola propia definición de relación non pode haber dúas tuplas iguais) e, de non ter a de minimalidade, poderíase prescindir daqueles atributos que o impedisen, obtendo así unha clave candidata.

Unha relación pode ter máis dunha clave candidata, entre elas cómpre distinguir:

  • Clave primaria. É a clave candidata que o usuario elixirá, por consideracións alleas ao modelo relacional, para identificar as tuplas da relación. Os atributos que forman parte da clave primaria non poden tomar valores nulos (lémbrese a restrición inherente que é a integridade da entidade).
  • Claves alternativas. Son aquelas claves candidatas que non foron elixidas coma claves primarias da relación.

Unha clave allea dunha relación R2 é un conxunto non baleiro de atributos cuxos valores han de coincidir cos valores da clave primaria dunha relación R1 (R1 e R2 poden ser a mesma relación). Dise que R2 é a relación que referencia, mentres que R1 é a relación referenciada.

Integridade referencial[editar]

Dentro das restricións propias dentro do modelo relacional atópase a de integridade referencial, que é de condición e acción específicas e que afirma que «se unha relación R2 ten un descritor CA que é clave allea que referencia á clave primaria CP dunha relación R1, todo valor de CA debe coincidir cun valor de CP, ou ser nulo». Esta é a condición da restrición, a cal pode expresarse coma un predicado:

R2.CA = R1.CP

Os descritores CA e CP han estar definidos sobre o mesmo dominio e permítese que sobre CA se defina, de ser preciso, a restrición de obrigatoriedade (se non se define, a clave allea admitirá valores nulos). Obsérvese que é a clave allea na táboa que referencia a que admitiría valores nulos, nunca a clave primaria da táboa referenciada.

No que respecta á acción, é de tipo específico (aínda que non é de rexeitamento en todos os casos). En caso de intentarse inserir unha tupla na táboa que referencia R2, que non cumpre a condición, a acción sería de rexeitamento. Se a condición falla debido a unha operación de borrado de tuplas ou de modificación da clave primaria na táboa referenciada R1, existen unha serie de opcións tanto para a operación de borrado como para a de modificación:

  • Rexeitar a operación.
  • Borrar as tuplas da táboa que referencia.
  • Pór valor nulo na clave allea da táboa que referencia.
  • Pór o valor por defecto na clave allea da táboa que referencia.

Restricións de condición xeral e de acción específica[editar]

Entre as restricións deste tipo de atopan as de verificación e as asercións.

Trátase de dúas restricións moi semellantes, que moitas veces poden utilizarse indistintamente. A principal diferencia radica en que a verificación se define sobre un único elemento do esquema (dominio ou relación), sendo por tanto unha restrición interna dun elemento, cuxa existencia vai ligada á de dito elemento. En cambio, as asercións poder darse entre distintos elementos, afectando a varias relacións, polo que a súa definición é a nivel de esquema. Ademais, as asercións sempre teñen que ter un nome, o cal non é obrigatorio no caso das restricións de verificación.

Restricións de condición e acción xerais[editar]

Así como as anteriores regras de integridade son declarativas, as restricións de condición e acción xerais ou “disparadores” son procedimentais (polo menos no que respecta á acción), sendo preciso que o usuario escriba o procedemento que ha de aplicarse en caso de que se cumpra a condición. Obsérvese que nos disparadores a acción actívase cando a condición se cumpre, ao contrario do que ocorre con outro tipo de restricións.

Este tipo de restricións é moi importante no deseño de bases de datos a fin de non perder no esquema relacional aquela semántica do esquema conceptual que non se pode recoller mediante as restricións anteriores.