tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
314
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    slowfly slowfly ist offline Mitglied Bronze
    Registriert seit
    Mar 2009
    Beiträge
    40
    Hallo zusammen

    Wir machen hier bei uns gerade ein Datenbankmodell und haben hier zwei verschiedene Lösungen für unser "Problem". Mich interessiert, welche Variante die "bessere"/"schönere" ist.

    Also, zu den ANforderungen:
    Ein Benutzer kann einen Einkaufszettel pflegen.
    Ein Benutzer kann einen Einkaufszettel für einen anderen Benutzer freigeben.

    Ich habe dann mal die Tabellen Benutzer und Einkaufszettel erstellt.

    Dann in der Tabelle Einkaufszettel einen Foreign Key "id_benutzer", welcher auf die id der Tabelle Benutzer referenziert.
    Für den Share habe ich dann eine "Verbindungstabelle" (wie sagt man richtig?) gemacht, mit zwei Foreign Keys, von welchen der eine auf Benutzer geht und der andere auf Einkaufszettel.

    So, meines Erachtens würde das ja prinzipiell funktionieren, jetzt wurde aber folgendes vorgeschlagen:
    Man kann ja den Foreign Key in der Tabelle Einkaufszettel löschen und dafür in der Verbindungstabelle ein "Boolean"-Feld "Eigentümer" setzen.

    Jetzt stellt sich die Frage, welche Varianten bieten welche Vor- und Nachteile?

    Was mir einfällt ist, dass in der ersten Variante ganz einfach durch die FK's sichergestellt ist, dass ein Einkaufszettel immer einem Benutzer gehört. In der zweiten Variante muss durch wahrscheinlich irgendwelche Constraints (ich bin kein DBA, an dieser Stelle *g*) sichergestellt werden, dass in der Verbindungstabelle für ein "Schlüsselpärchen", also Benutzer und Einkaufszettel, immer genau ein Eintrag existiert, bei welchem dieses Boolean-Eigentümer-Feld auf true gesetzt ist...

    Was meint ihr dazu?

    Besten Dank und Gruss
    slowy
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Die erste Variente ist gut, wenn du ein Einkaufszettel für mehrere andere Benutzer machen kannst.
    Wenn du aber pro Einkaufszettel nur ein Benutzer hast und der Einkaufszettel nicht weitergereicht (oder wenn, das historisiert werden muss), würde ich in der Einkaufszeittel-Tabelle 2 Felder machen.
    - fk_id_creater
    - fk_id_owner

    Derjenige der den Zettel schreibt ist der creator. Derjenige der ihn aktiv hat ist der owner. Wenn man für sich selber einen schreibt, dann sind die beiden Felder gleich abgefüllt. So muss man sich nicht mit Flags undsoweiter herumschlagen.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    slowfly slowfly ist offline Mitglied Bronze
    Registriert seit
    Mar 2009
    Beiträge
    40
    Besten Dank für deine Antwort.

    Also der Einkaufszettel "wird für mehrere Benutzer gemacht". Zur Erklärung: Zum Beispiel geh ich immer für meine Mutter einkaufen (gehen wir einfach mal aus, dass es so ist hehe). Dann macht die Mutter ihren Einkaufszettel am Morgen und gibt ihn mir frei. Ich kann dann bei der Arbeit dann Zettel anschauen und ändern (brauch ja noch Zigaretten), gleichzeitig kann sie ihn aber auch noch ändern, da sie vergessen hat, dass die Butter wieder mal alle ist.

    Aber was ist mit der zweiten Variante? Technisch würden ja beide Varianten mit diesen Anforderungen funktionieren,...

    Danke und Gruss
     

Ähnliche Themen

  1. [MySQL] Verbindungstabelle -> Wert aus Tabelle als Variable speichern
    Von Steusi im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 13.09.10, 13:07
  2. Binary-Flag und Pointer Kombinieren?!
    Von Enumerator im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 19.02.10, 21:33
  3. Variable / Flag zum Sperren einer Datenbankbearbeitung
    Von Rukh75 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 17.10.09, 01:26
  4. Style-Flag von Controls
    Von proprogger im Forum .NET Windows Forms
    Antworten: 2
    Letzter Beitrag: 02.01.06, 15:08
  5. Antworten: 2
    Letzter Beitrag: 26.10.05, 16:24

Stichworte