Ejemplo n.º 1
0
 /*  determinatesPorTransitividad(Atributo attr)
  *  attr: Atributo del cual se quiren conseguir los Atributos que lo determinan
  *  retorna todos los Atributos que determinan a 'attr'
  *  *Es Recursivo, tomando la dependencia A>B>C>D, el metodo va 'escalando' desde D hasta A
  *  Tomando cada uno de sus determinantes.
  */
 private List<Atributo> determinatesPorTransitividad(Atributo attr,List<Atributo> attrAnalizados)
 {
     List<Atributo> todos = new List<Atributo>();
     todos = todos.Concat(attr.getDeterminantes()).ToList();
     attrAnalizados.Add(attr);
     foreach (Atributo det in attr.getDeterminantes()) {
         if (attrAnalizados.Contains(det)) continue;
         todos = todos.Concat(determinatesPorTransitividad(det, attrAnalizados)).ToList();
     }
     return todos;
 }
Ejemplo n.º 2
0
 /*  cumple3FN
  *  Todo atributo que dependa transitivamente de la ClavePrimaria
  *  No cumple la 3FN
  */
 private bool cumple3FN(Atributo attr, Tabla tabla)
 {
     /* Si existe algun Atributo X que determine a Y, que no pertenezca a la clavePrimaria
      * Decimos que Y depende transitivamente de la clavePrimaria.
      */
     foreach (Atributo at in attr.getDeterminantes()) {
         if (tabla.contains(at)) return false;
     }
     return true;
 }
Ejemplo n.º 3
0
 private Atributo calculaSubPK(Atributo attr, Atributo pk)
 {
     foreach (Atributo at in attr.getDeterminantes()) {
         if (xSubY(at, pk)) return at;
     }
     return null;
 }
Ejemplo n.º 4
0
 //=========================================================================
 /* cumple2FN
  * 1. Todo atributo no primo de la relacion debe depender de la clave primaria
  * 2. Todo atributo que dependa parcialmente de la clavePrimaria no cumple 2FN
  */
 private bool cumple2FN(Atributo attr, Atributo pk)
 {
     /*Si algun Atributo X que Determine a Y, es Subconjunto de la ClavePrimaria
      * Decimos que Y depende parcialmente de la Clave Primaria
      * entonces no cumple la 2FN
      */
     foreach (Atributo at in attr.getDeterminantes()) {
         if (xSubY(at, pk)) return false;
     }
     return true;
 }
Ejemplo n.º 5
0
 private Atributo calcularFK(Atributo attr, Tabla tabla)
 {
     foreach (Atributo at in attr.getDeterminantes()) {
         if (tabla.contains(at)) return at;
     }
     return null;
 }