DB Design, brauche Hilfe

hey_now

Benutzer
Beiträge
5
Hallo,
ich arbeite gerade an einem Projekt für meine FH. Das derzeitige DB Design sieht so aus wie auf dem Bild zu erkennen. Ich bin mi rnicht sicher, wie ich am besten die Relation zwischen einem Beitrag und einem besimmten Bereich hinbekomme. Wichtig zu wissen ist noch, dass man später nach allen drei Bereichen und Jahrgang filtern können muss. Also z.B.: "Alle Beiträge aus Fakultät A aus dem Jahr 2012".

Es gibt also drei verschiedene Arten von Bereichen(Fakultät, Einrichtung, Päsidium). Die könnten entweder als eigene Tabellen angelegt werden, oder in einer Tabelle sein (dann mit einem "Typ" Feld).

Weiterhin gibt es Beiträge, jeder der Beiträge gehört zu einem Bereich. Jeder Bereich hat viele Beiträge.

Wenn jetzt alle Bereiche in einer Tabelle sind, könnte man ja einfach jedem Beitrag eine Bereich_ID hinzufügen. Aber dann wird das filtern der versch. Bereiche etwas kompliziert.

Ich würde lieber alle Bereiche in ihre eigene Tabelle packen. Dann weiß ich aber nicht, wie ich am Besten die Beiträge einem Bereich zuordne, da ja die IDs in den Bereichs Tabellen unter Umständen identisch sein könnten. Eine Idee ist diese: jeder Beitrag hat drei Bereichs_ID Felder. Für jeden der drei Bereiche eine, und es wird eben nur der passende Wert eingetragen. Die anderen bleiben leer.

Oder man erstellt eine Bridge Tabelle mit Betriags_ID, Bereichs_ID und Bereichs_Typ? Hört sich auch falsch an irgendwie.

Wäre für Vorschläge sehr dankbar!
qCzrJH1.jpg
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Ja ok, dann eben ohne Bild:

Meine Frage ist, wie kann ich am besten eine Tabelle_A mit einer anderen Tabelle verbinden. Die andere Tabelle kann dabei eine von drei verschiedenen sein. Also Tabelle_A gehört zu Tabelle_A, Tabelle_B oder Tabelle_C. Hoffen das ist jetzt verständlicher geworden..
 
Ja ok, dann eben ohne Bild:

Meine Frage ist, wie kann ich am besten eine Tabelle_A mit einer anderen Tabelle verbinden.

Mit einem JOIN.

Die andere Tabelle kann dabei eine von drei verschiedenen sein. Also Tabelle_A gehört zu Tabelle_A. Hoffen das ist jetzt verständlicher geworden..

Nicht wirklich ;-)

Deine Fakultät, Einrichtung oder Präsidium kannst Du in eine Tabelle packen, vermutlich. Die je Typ zusätzlichen Eigenschaften in EAV-Tabellen oder HSTORE.
 
Ach, Tippfehler: Tabelle_A (Beiträge) gehört zu Tabelle_B (Fakultäten) , Tabelle_C (Einrichtungen) ODER Tabelle_D (Präsidien).

OK, Möglichkeit eins also alles in eine Tabelle, dass hatte ich auch schon überlegt. Aber besser wären drei einzelne Tabellen.

Wenn ich die Fakultät etc aber in eigenen Tabellen haben will, wie kann man dann die Beiträge den Bereichen zuordnen?

Beispiel:
Beitrag ID 3 gehört zur Fakultät ID 5. Jetzt kann ich ja in die Beträge Tabelle ein Feld für die zugehörig Bereichs_ID einfügen. In diesem Beispiel hätte der Beitrag da eine 5 stehen. Aber wenn ich nicht für alle drei möglichen Bereiche ein extra Feld anlegen will, wie kann ich dann feststellen, welche Bereichs Tabelle gemeint ist? Die ID 5 kann ja in allen drei vorkommen.
 
Ach, Tippfehler: Tabelle_A (Beiträge) gehört zu Tabelle_B (Fakultäten) , Tabelle_C (Einrichtungen) ODER Tabelle_D (Präsidien).

OK, Möglichkeit eins also alles in eine Tabelle, dass hatte ich auch schon überlegt. Aber besser wären drei einzelne Tabellen.

Wenn ich die Fakultät etc aber in eigenen Tabellen haben will, wie kann man dann die Beiträge den Bereichen zuordnen?

Beispiel:
Beitrag ID 3 gehört zur Fakultät ID 5. Jetzt kann ich ja in die Beträge Tabelle ein Feld für die zugehörig Bereichs_ID einfügen. In diesem Beispiel hätte der Beitrag da eine 5 stehen. Aber wenn ich nicht für alle drei möglichen Bereiche ein extra Feld anlegen will, wie kann ich dann feststellen, welche Bereichs Tabelle gemeint ist? Die ID 5 kann ja in allen drei vorkommen.

Tabellen-Partitionierung wurde schon erfunden. Ob im MySQL-Land weiß ich aber grad nicht. Aber warum willst Du das so, über wie viele Datensätze reden wir einklich?
 
Das wird alles einmal im Jahr aktualisiert, glaube es sind 7 Fakultäten, 10 Einrichtungen und 1 Präsidium pro Jahr. Alle haben dann noch je bis zu 14 beiträge, jeder Beitrag hat bis zu vier Bilder.
Wichtig ist eben, dass man alles filtern muss, also zB alle Beiträge aus Fakultät A aus dem Jahr 2012 oder alle Beiträge aus allen Bereichen aus dem Jahr 2013.
 
Das wird alles einmal im Jahr aktualisiert, glaube es sind 7 Fakultäten, 10 Einrichtungen und 1 Präsidium pro Jahr. Alle haben dann noch je bis zu 14 beiträge, jeder Beitrag hat bis zu vier Bilder.

Ach herje, da friert ja der Cache ein!

Wichtig ist eben, dass man alles filtern muss, also zB alle Beiträge aus Fakultät A aus dem Jahr 2012 oder alle Beiträge aus allen Bereichen aus dem Jahr 2013.

Wie schon gesagt: alles in eine Tabelle, Typ-Spalte dran, fertsch. Restliche Eigenschaften via EAV oder HSTORE. Bei der Handvoll Datensätzen ist einklich alles egal... sogar bei MySQL.
 
Werbung:
Zurück
Oben