Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

DB Design, brauche Hilfe

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von hey_now, 30 Dezember 2013.

  1. hey_now

    hey_now Benutzer

    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 von einem Moderator bearbeitet: 31 Dezember 2013
  2. akretschmer

    akretschmer Datenbank-Guru

    Ich komm mit solchen Gemälden nicht zurecht. Eher mit SQL.
     
    Zuletzt von einem Moderator bearbeitet: 31 Dezember 2013
  3. hey_now

    hey_now Benutzer

    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..
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Mit einem JOIN.

    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.
     
  5. hey_now

    hey_now Benutzer

    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.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    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?
     
  7. hey_now

    hey_now Benutzer

    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.
     
  8. akretschmer

    akretschmer Datenbank-Guru

    Ach herje, da friert ja der Cache ein!

    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.
     
  9. hey_now

    hey_now Benutzer

    Hm, jo.. Mal sehen ;) danke für die Hilfe schonmal.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden