AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Datenmodell

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

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

Datenmodell

  Alt 27. Jan 2010, 13:59
Datenbank: MS SQL Server • Version: 2008 • Zugriff über: Native SQL
Hallo zusammen,

ich bin leider nicht so erfahren im Aufbau einer Datenbank (Normalisierung usw...), deshalb schildere ich einfach mal kurz das Problem, für das ich ein DB-Modell bräuchte.
In meiner Anwendung sollen Datenbankverbindungen gespeichert werden, auf denen basierend dann später Modelle entworfen werden können (welche Modelle spielt in diesem Zusammenhang keine Rolle). Eine DB-Verbindung ist gekennzeichnet durch z.B. Datenbankname, Provider, Server, Username usw...
Beim Start der Anwendung müssen sich Benutzer anmelden, deshalb habe ich auch eine Benutzertabelle (UserID, Loginname, Fullname usw....). Jeder Benutzer soll beliebig viele DB-Verbindungen anlegen können. So weit so gut. Nun soll es aber auch Verbindungs-Gruppen geben, die es jedem Benutzer, der für diese Gruppe eingetragen ist, ermöglichen soll, auf die in dieser Gruppe definierten Verbindungen zugreifen zu können. Andere Verbindungen in Gruppen, für die er nicht eingetragen ist, darf er natürlich nicht sehen. Nun suche ich ein passendes DB-Modell um diese Anforderungen abzudecken, um relativ einfach mittels SQL später zu jedem User alle Verbindungen, auch die in den Gruppen definierten, für die er eingetragen ist, auflistet.
Kann hier einer helfen?
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Datenmodell

  Alt 27. Jan 2010, 14:04
Hallo,

ich weiß nicht ob ich damit richtig liege, aber ich könnte mir vorstellen das Du das mit Firebird und Views realisieren kannst.

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Cogito

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

Re: Datenmodell

  Alt 27. Jan 2010, 14:08
Zitat von Jens Hartmann:
Hallo,

ich weiß nicht ob ich damit richtig liege, aber ich könnte mir vorstellen das Du das mit Firebird und Views realisieren kannst.

Gruß Jens
Hallo Jens,

das kann ich denke ich mit jedem relationalen DB-System lösen, die Frage war, wie sieht das Datenbankmodell für das geschilderte Szenario aus?
  Mit Zitat antworten Zitat
Blup

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

Re: Datenmodell

  Alt 28. Jan 2010, 07:15
Vieleicht so:
Code:
T_CustomGruppen
ID

T_Benutzer
ID    PK FK->T_CustomGruppen
{...}

T_Gruppen
ID    PK FK->T_CustomGruppen
{...}

T_Verbindungen
ID    PK FK->T_CustomGruppen
NR    PK
{...}

T_GruppenMitglieder
ID_Gruppe  PK FK->T_Gruppen
ID_Benutzer PK FK->T_Benutzer
  Mit Zitat antworten Zitat
Cogito

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

Re: Datenmodell

  Alt 28. Jan 2010, 08:37
Zitat von Blup:
Vieleicht so:
Code:
T_CustomGruppen
ID

T_Benutzer
ID    PK FK->T_CustomGruppen
{...}

T_Gruppen
ID    PK FK->T_CustomGruppen
{...}

T_Verbindungen
ID    PK FK->T_CustomGruppen
NR    PK
{...}

T_GruppenMitglieder
ID_Gruppe  PK FK->T_Gruppen
ID_Benutzer PK FK->T_Benutzer
Aha, interessant!
In der Tabelle CustomGruppen würden also quasi die Informationen der Benutzer, Gruppen und Verbindungen zusammenlaufen, sowie in GruppenMitglieder die Benutzer und Gruppenzugehörigkeit ersichtlich?
Welcher Art sollten denn die Verbindungen sein (Referenzintegrität, 1:n )?
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Datenmodell

  Alt 28. Jan 2010, 09:07
Jede Gruppe kann n mitglieder enthalten und jeder Mitglied kann zu m Gruppen zugeordnet sein ? Dann eher n:m
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Cogito

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

Re: Datenmodell

  Alt 28. Jan 2010, 10:10
Zitat von sniper_w:
Jede Gruppe kann n mitglieder enthalten und jeder Mitglied kann zu m Gruppen zugeordnet sein ? Dann eher n:m
Bitte etwas ausführlicher und präziser. Welche Gruppen meinst du jetzt...
Könnte man das Modell von Blup mal als kleines ER Modell (gerne in Access mit dem Modelldesigner erstellt und als bild speichern) posten, damit man die Zusammenhänge, Relationen und Abhängigkeiten erkennen kann?
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Datenmodell

  Alt 28. Jan 2010, 15:57
Zitat von Cogito:
Nun soll es aber auch Verbindungs-Gruppen geben, die es jedem Benutzer, der für diese Gruppe eingetragen ist, ermöglichen soll, auf die in dieser Gruppe definierten Verbindungen zugreifen zu können.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Cogito

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

Re: Datenmodell

  Alt 29. Jan 2010, 09:18
Ich habe das jetzt mal als Relationen abgebildet. Wäre das ok so oder stimmen irgendwelche Relationen nicht?
Miniaturansicht angehängter Grafiken
relations_125.png  
  Mit Zitat antworten Zitat
Blup

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

Re: Datenmodell

  Alt 29. Jan 2010, 13:17
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.
Angehängte Dateien
Dateityp: zip datenbankdesign_143.zip (9,1 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:10 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