Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Anbindung Datenbank über Datamodul (https://www.delphipraxis.net/138031-anbindung-datenbank-ueber-datamodul.html)

Jens Hartmann 2. Aug 2009 16:55

Datenbank: Firebird • Version: V2.1 • Zugriff über: ZEOS

Anbindung Datenbank über Datamodul
 
Hallo zusammen und schönen Sonntag,

ich habe mal eine Grundlegende Frage zu dem Aufbau meiner Anwendung mit Datenmodul. Bis jetzt habe ich meine Datenbankanbindung in den jeweiligen Formularen über eigene TZConnection und Query´s gemacht. Ich habe jetzt ein Datenmodul eingefügt, um meine Datenbankanbindung Zentral zu handeln. Außerdem, möchte ich in diesem Datenmodul gewisse Methoden implementieren.

Jetzt meine Frage: Verwende ich für jede Datenbank eine gemeinesame Connection oder wie bei den Query´s für jeden Fall (Methode) eine eigene.

Meine gedanke wäre eigendlich folgender:

Ich habe drei DB, 1. USER Verwaltung 2. Konfiguration meiner Anwendung und 3. Die eigendlichen Daten.

Ich hätte jetzt drei Connection´s in das Datenmodul gelegt, die ich beim Create meiner Anwendung Connecten würde. Und anschließende wie gewohnt für jede Abfrage oder für jedes Methode eine eigene Query.

Ist der Gedanke soweit OK:

Danke schon mal.

Gruß Jens

mkinzler 2. Aug 2009 16:57

Re: Anbindung Datenbank über Datamodul
 
Eine Verbindung pro Datenbank. Verschiedene Sichten kannst du dann mit Hilfe verscheidener Transaktionen schaffen

Jens Hartmann 2. Aug 2009 17:36

Re: Anbindung Datenbank über Datamodul
 
Na dann,

dann bin ich ja auf dem richtigen Weg. Das mit den Sichten habe ich schon so angefangen zu lösen. Dann will ich mal weiter basteln.

Gruß Jens

Jens Hartmann 3. Aug 2009 10:22

Re: Anbindung Datenbank über Datamodul
 
Hallo mal wieder,

álso, ich habe jetzt mal angefangen das mit den Sichten zu realisieren. Mein Gedanke dabei wäre folgender.

In meiner DB USER gibt es fest im Lieferumfang zwei USER. ADMIN und SUPERUSER.

Für beide USER gibt es eine Sicht, mit der ich beim Programmstart gewisse Funktionen aktiviere oder deaktivieren. Soll heißen, CHECKBOX.Checked = Funktion erlaubt, sonst nicht.

Jetzt ist meine Gedanke, Sollte der Kunde jetzt einen neuen USER anlegen wollen, kann er das als ADMIN in der USERVerwaltung machen. Beim betätigen des Button NEU-Anlegen, möchte ich einmal prüfen, ob der USERNAME schon vorhanden ist, da ich doppelte USER Namen verhindern will. Sollte das der Fall sein, wird eine Meldung ausgegeben, USER Bereits vorhanden.

Ist diese Abfrage OK, wird erst ein INSERT durchgeführt und anschließend ein CREATE VIEW welches den USERNAMEN nutzt.

USER_NEU (Neue Sicht)

Will sich nun der neue USER anmelden, wird in die USER_NEU gesehen und die vergebenen Berechtigungen aktiviert.

Jetzt halt meine Frage, ist der Gedankengang soweit OK. Somit würde ich in meine Datenmodul einen Query für das INSERT, einen Query für das CREATE VIEW und eine Query für die Programmanmeldung benötigen.

Danke schon mal

Gruß Jens

nahpets 3. Aug 2009 11:06

Re: Anbindung Datenbank über Datamodul
 
Hallo,

brauchst Du wirklich für jeden Benutzer eine eigene View, reicht da nicht eine per Parameter angepasste Abfrage auf eine für alle Benutzer gültige View?

Bei Views mit Benutzernamen im Viewnamen, musst Du ggfls. auf Sonderzeichen, maximal mögliche Länge des Viewnamens... bei der Vergabe der Benutzernamen berücksichtigen. Willst Du das wirklicht?

Meiner Meinung nach reichen ein Insert und eine Abfrage, die den Benutzernamen als Parameter erhält, für die Programmanmeldung.

khh 3. Aug 2009 11:33

Re: Anbindung Datenbank über Datamodul
 
Zitat:

Zitat von nahpets
Hallo,


Meiner Meinung nach reichen ein Insert und eine Abfrage, die den Benutzernamen als Parameter erhält, für die Programmanmeldung.

dem schliesse ich mich an, warum willst du hier überhaupt mit views arbeiten?

Jens Hartmann 3. Aug 2009 12:45

Re: Anbindung Datenbank über Datamodul
 
Ich dacht das ich mit View´s arbeite, um dem jeweiligen USER nur auf gewisse Teile vom Programm zugriff zu geben. Ersteres könnte ich sicherlich über Parameter lösen, aber die Frage ist, ich vergebe dem USER ja auch rechte wie Schreiben, Lesen, Ändern auf die entsprechenden Datenbanken.

Um dies zu realisieren, das eine USER X nur die Spalte XYZ der Tabelle X sehen kann, dachte ich das das über die View´s schon recht gut zu lösen ist.

Soll heißen, ich will eine CREATE VIEW über mehrere DB und Tabllen machen. Sollte doch so in der Art funktionieren...

SQL-Code:

CREATE VIEW USER XYZ
  (KONFIGURATION, EREIGNIS, DATUM)
AS SELECT NUTZER.KONFIGURATION, DATEN.EREIGNIS, DATEN.DATUM
  FROM NUTZER, DATEN
Gruß Jens

nahpets 4. Aug 2009 09:25

Re: Anbindung Datenbank über Datamodul
 
Hallo,

gibt es denn für jeden User nur eine einzige Sicht auf sämtliche Daten? Wie willst Du damit hunderte oder gar tausende von Benutzern verwalten?
Bei 'nem Dutzend Benutzer mag das so noch angehen, aber bei einer größeren Menge stelle ich mir das dann doch eher "sportlich" vor.
Wie sieht es denn aus mit Benutzergruppen. Bestimmte Rechte können ja wahrscheinlich in bestimmten Kombinationen vorkommen, dann mag für jede Benutzergrupper eine View noch sinnvoll erscheinen. Aber der Sinn für jeden Benutzer eine View zu erstellen, erschließt sich für mich mit den vorliegenden Informationen noch nicht.

Deine Beispielview hat keine Einschränkung auf die Daten eines Benutzers, würde daher nur eine "Einschränkung" auf Spalten ergeben. Dies würde bedeuten, dass Du die Daten benutzerabhängig ins Tabellenspalten ablegst, das kann ich mir so nicht vorstellen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz