Primary key Additional Exceptions

Relational Keys


Las claves relacionales, representan relaciones entre las diferentes clases, se usan para saber en base a que atributos se dan estas relaciones.

Miremos la función relation_keys de la clase person:

public function relational_keys($class$rel_name)
{
    switch(
$class)
    {
        case 
"boss":
        switch(
$rel_name)
        {
            case 
"b_p":
            return array(
"boss");
            break;
        }
        break;
                
        default:
        break;
    }
}

Existen 2 niveles de switches, el primer nivel de switche representa las clases con las que person se relaciona (en este caso solo con boss) y ese case especifico, a su vez tiene otro nivel de switche (nivel 2) donde cada case representa una relación con esa clase (en este caso b_p), y cada case retorna uno o varios nombres de atributos, que representan esa relación.

Como podemos ver la clase person tiene una sola relación hacia boss llamada "b_p" (mas abajo se menciona como nombrar las relaciones), pero podría tener múltiples relaciones y podría relacionarse con múltiples clases y hasta tener varias relaciones hacia una misma clase o hacia si misma (luego veremos estos ejemplos mas complejos).

La única información que nos da esta función relational keys, es que esa relación "b_p" se da por medio del atributo "boss" (atributo propio de la clase person), ya luego mirando en la función "metadata" los meta-datos del atributo "boss" encontraremos todos los detalles de esa relación.


Nombres de las relaciones (Caritas):
Cuando 2 clases se relacionan o una clase se relaciona con si misma, se debe colocar un nombre a esta relación, G recomienda un método para colocar estos nombres llamado ('caritas' o en ingles 'little faces'), el proceso es simple:
  1. Se cogen las letras iniciales de cada clase (en el ejemplo anterior serian las letras b de boss y p de person)
  2. Se ordenan alfabéticamente (en el ejemplo anterior ya están ordenadas alfabéticamente b, p)
  3. Se separan por un guion bajo, dando como resultado: b_p

El método anterior es muy útil ya que cuando necesitemos usar una relación, recordaremos fácilmente el nombre de la relación sin necesidad de buscar en los archivos el nombre de la relación.

Nota: en el caso de que exista mas de 1 relación entre las mismas 2 clases, se recomienda crear el primer nombre de relación normal, el segundo igual que el primero solo que adicionándole el número 2 y así sucesivamente; por ejemplo: b_p, b_p2, b_p3...
Primary key Additional Exceptions