Prüfung auf mögliche funktionelle Abhängigkeiten



  • Hallo zusammen,
    es wäre super wenn mir jemand einen Tipp geben würde, da ich gerade ziemlich ratlos bin.☹

    Wir haben ein Java-Programm zum Thema Datenbanken vorgegeben und sollen jetzt das Interface "FunktionaleAbhaengigkeitenPruefen.java" implementieren.
    Hier sollen wir die Methoden:

    • boolean kannFunktionalAbhaengigSein(Tabelle tabelle,String[] von, String[] abhaengig);

    • boolean kannVollFunktionalAbhaengigSein(Tabelle tabelle,String[] von, String[] abhaengig);

    • boolean kannSchluesselkandidatSein(Tabelle tabelle, String[] kann);

    schreiben.

    Mein Problem ist, dass ich die Theorie verstehe, also mir sind die Begriffe bekannt. Mir fehlt nur der Ansatz wie ich das ganze implementieren soll.

    Meine Idee für die Methode "kannFunktionalAbhaengigSein" ist folgende:

       public boolean kannFunktionalAbhaengigSein(Tabelle tabelle, String[] von, String[] abhaengig){
                 
            //Bijektive Abbildung
            final Set<String> vonSet = new HashSet<>(Arrays.asList(von));
            final Set<String> abhaengigSet = new HashSet<>(Arrays.asList(abhaengig));
    
            return vonSet.equals(abhaengigSet); 
    

    Auf die Idee bin ich durch diese "Definition" gekommen:

    Eine Funktionale Abhängigkeit zwischen Attribut Y und Attribut X liegt dann vor, wenn es zu jedem X genau ein Y gibt.
    

    Ansonsten bin ich aber wirklich ratlos wie ich zum Beispiel das folgende implementieren soll☹

    Definition: volle funktionelle Abhängigkeit: 
    Gegeben sei eine Tabelle. Eine Menge von Attributen B der Tabelle ist voll 
    funktional abhängig von einer Menge von Attributen A der Tabelle, 
    wenn A -> B gilt und für jede echte Teilmenge A‘ von A nicht A‘ -> B gilt.
    
    

    Ich hoffe mir kann jemand einen Ansatz zeigen🙃



  • Da musst du dich wohl selber reindenken... Zumindest ich hab da auf den ersten Blick bei weitem nicht genug Informationen und hätte auch keine Lust, mich da reinzudenken. Fängt schon damit an, dass ich mit den Parametern nicht viel anfangen kann und mich beim Funktionsnamen beinah übergeben hätte...

    Aber so auf den ersten Blick glaube ich nicht, dass das was du hingeschrieben hast, richtig ist.