Lude: Verwalten des "Datenzugriff mit SQL"

Beitrag lesen

Hallo, Michael,

ich versuche mir die Sache mal anhand folgenden Beispiels vorzustellen:

Gegeben sind die Tabellen 'USERS' (DFs 'User_ID', 'User_Name', 'User_Password', 'User_Rights_ID') und 'RIGHTS' (DFs 'Right_ID', 'Right_Name'), wobei in der Tabelle 'USERS' auf dem DF 'User_Right_ID' ein Fremdschluessel auf 'Right_ID' (Tabelle 'USERS') sitzt.

Datenzugriff - Anforderung "Gib' mir 'Right_Name' fuer 'User_Name' und 'User_Password':
Die "umgebende Programmlogik" wendet sich nun beispielsweise an ein Objekt mit dem Namen 'Datenzugriff', welches beim Konstrukten prueft, ob der Datenserver erreichbar ist und im Fehlerfall im Destruktor die Meldung 'Error Datenzugriff.1: Konnte Datenserver nicht erreichen' zurueckgibt.

Dann setzt das globale Datenzugriffsobjekt das Unterobjekt mit dem Namen 'Datenzugriff.USERS', welches im Konstruktor eine Schemaabfrage Richtung "Datenserver.DB.USERS" sendet und prueft, ob das Schema dem Erwarteten entspricht, ansonsten Destruktormeldung 'Error Datenzugriff.USERS.1: Schema unerwartet' an 'Datenzugriff'. Dann ruft das Objekt 'Datenzugriff' die Methode 'Datenzugriff.USERS.Gib_mir_das_Recht_fuer_User_Name_und_User_Password()' auf. Diese setzt dann das Objekt 'Datenzugriff.RIGHTS', welches im Konstruktor ebenfalls eine Schemaabfrage Richtung "Datenserver.DB.RIGHTS" sendet mit der Frage "Sind die erwarteten DFs alle da?", im Misserfolgsfall wird vom Destruktor die Meldung 'Error Datenzugriff.RIGHTS.1: Schema unerwartet' an 'Datenzugriff' zurueckgegeben.

Nun sind die drei Objekte also da.   :-)

Als naechstes ruft die Methode 'Datenzugriff.USERS.Gib_mir_das_Recht_fuer_User_Name_und_User_Password()' die private Methode 'Datenzugriff.USERS.Gib_mir_die_User_ID_fuer_User_Name_und_User_Password()' auf, welche im Erfolgsfall eine ID zurueckgibt. Ansonsten Fehlermeldung: 'Error Datenzugriff.USERS.2: keinen User gefunden'

Nun wendet sich 'Datenzugriff.USERS.Gib_mir_das_Recht_fuer_User_Name_und_User_Password()' an die Methode 'Datenzugriff.RIGHTS.Gib_mir_Right_Name_fuer_Right_GUID()', welche dank der vom DB(M)S unterstuetzen ref. Integritaet einen Namen zurueckgibt.

Nun wird diese Information "nach oben" zurueckgegeben und destruktet ('Datenzugriff' wuerde ich mal nicht destrukten und permanent verfuegbar lassen). - Validieren und ggf. Maskieren der Daten mal in dieser Betrachtung unbehandelt gelassen.

Habe ich Dich tendenziell richtig verstanden? - Welche Strukturhierarchie sollten die Objekte? - Soll sowas wie eine Baumstruktur 'rauskomen? - Ist der Overhead nicht _immens_, wenn man sich Abfragen mit beispielsweise 8 Joins vorstellt? - Kann man diese "Datenzugriffs-ObjektStruktur" nicht auch mit SPs, die sich gegenseitig aufrufen, abbilden?

Wie immer gespannt auf (D)eine Antwort.

Gruss,
Lude