AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datenmodell

Ein Thema von Cogito · begonnen am 27. Jan 2010 · letzter Beitrag vom 1. Feb 2010
Antwort Antwort
Seite 2 von 2     12   
Cogito

Registriert seit: 12. Jun 2008
280 Beiträge
 
#11

Re: Datenmodell

  Alt 29. Jan 2010, 14:25
Zitat von Blup:
ConnectionGroupsMembers:
Die OID ist zumindest für die Datenbank überflüssig.
Die Kompination aus ID_Groups und ID_Users ist eineutig und könnte der Primärschlüssel sein.
Die Tabelle enthält nur Relationen zwischen zwei Identitäten und es gibt keine abhängigen Tabellen.

ConnectionGroups
Von den Spalten OID und ConnectionGroupsID ist eine überflüssig.
Ein Objekt sollte nur eine ID haben und dafür reicht ein Feld OID.
Die Beziehungen zu den Tabellen ConnectionGroupsMembers und CustomConnectionGroups sollten über dieses eine Feld laufen.

Users
Hier gilt das selbe wie für ConnectionGroups.

CustomConnectionGroups
Menge(CustomConnectionGroups) = Menge(Users) + Menge(ConnectionGroups)
Die Beziehung zwischen CustomConnectionGroups und ConnectionGroups ist zwar 1:N, aber N kann nur 0 oder 1 sein.
Für jeden Eintrag in ConnectionGroups gibt es genau einen Eintrag in CustomConnectionGroups (eindeutig), aber nicht für jeden Eintrag CustomConnectionGroups gibt es auch einen Eintrag in ConnectionGroups (nicht eineindeutig).
Das gilt ebenso für die Beziehung CustomConnectionGroups zu Users.
Vielen Dank, das sieht schon gut aus!
Darf ich nochmal resümieren, wie ich das bisher verstanden habe (als nicht DB erfahren):

- Benutzer werden beim neuanlegen in die Tabelle T_Benutzer eingetragen
- Gruppen werden in T_Gruppen angelegt
- Wird ein Benutzer einer Gruppe hinzugefügt wird die ID des Benutzers und die ID der Gruppe in die Tabelle T_Gruppenmitglieder eingefügt

Der Rest, muss ich gestehen, ist mir noch nicht ganz klar.
Könntest Du mir hier noch bitte erklären, was hier bei den einzelnen Vorgängen zu tun ist, analog zu den drei Schritten oben? Also z.B. was beim Anlegen einer Verbindung zu tun ist.. usw...
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: Datenmodell

  Alt 29. Jan 2010, 15:57
Zitat von Cogito:
- Benutzer werden beim neuanlegen in die Tabelle T_BENUTZER eingetragen
Der Benutzer ist im Prinzip eine Rolle von CustomGruppe.
Seine OID stammt aus der Identität in der Tabelle T_CUSTOMGRUPPEN.
(Man könnte das auch als Klasse und abgeleitete Klasse verstehen.)

Deshalb wird zuerst eine neue OID erzeugt und in CUSTOMGRUPPEN eingetragen.
Jetzt kann der Benutzer mit der selben OID in T_BENUTZER eingetragen werden.
Mit BeforeInsert-Trigger lässt sich das automatieren.

Zitat von Cogito:
- Gruppen werden in T_Gruppen angelegt
Hier gilt gleiches wie für Benutzer.

Zitat von Cogito:
- Wird ein Benutzer einer Gruppe hinzugefügt wird die ID des Benutzers und die ID der Gruppe in die Tabelle T_Gruppenmitglieder eingefügt
Logisch.

Zitat von Cogito:
Also z.B. was beim Anlegen einer Verbindung zu tun ist.. usw...
Sowohl Benutzer als auch Gruppe sind Rollen der CustomGruppe.
Beide besitzen eine OID die aber aus ihrer eigentlichen Identät T_CUSTOMGRUPPEN stammt.
Es genügt also die OID (des Benutzers oder einer Gruppe) zu nehmen, als weiteres Kriterium für die Eindeutigkeit (1:N) z.b. eine fortlaufende Nummer und mit den weiteren Daten in T_VERBINDUNGEN einzutragen.
(Die Basisklasse CustomGruppe hat eine Liste von Verbindungen, sowohl Benutzer als auch Gruppen erben diese.)

Die Verbindung ist übrigens keine eigene Identität, sie kann nur existieren wenn auch eine entsprechende CustomGruppe existiert.
  Mit Zitat antworten Zitat
Cogito

Registriert seit: 12. Jun 2008
280 Beiträge
 
#13

Re: Datenmodell

  Alt 30. Jan 2010, 11:11
OK, verstanden. Vielen Dank für die ausführliche Erklärung!
Und wie frage ich z.B. nun ab, in welcher oder welchen Gruppen ein Benutzer ist?
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: Datenmodell

  Alt 1. Feb 2010, 08:16
Zitat von Cogito:
Und wie frage ich z.B. nun ab, in welcher oder welchen Gruppen ein Benutzer ist?
z.B. so:
SQL-Code:
select id_gruppe
from T_GruppenMitglieder
where id_benutzer = :id_benutzer
oder falls alle Daten der Gruppe(n) gebraucht werden:
SQL-Code:
select b.*
from T_GruppenMitglieder a
left join T_Gruppen b on b.id = a.id_gruppe
where a.id_benutzer = :id_benutzer
Wobei Parameter wie hier ":id_benutzer" je nach Datenbank/Komponenten eventuell anders notiert werden.
  Mit Zitat antworten Zitat
Cogito

Registriert seit: 12. Jun 2008
280 Beiträge
 
#15

Re: Datenmodell

  Alt 1. Feb 2010, 14:13
Danke schön für die Antworten!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz