ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
314
314
EMPFEHLEN
-
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
-
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
-
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
-
[MySQL] Verbindungstabelle -> Wert aus Tabelle als Variable speichern
Von Steusi im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 13.09.10, 13:07 -
Binary-Flag und Pointer Kombinieren?!
Von Enumerator im Forum C/C++Antworten: 1Letzter Beitrag: 19.02.10, 21:33 -
Variable / Flag zum Sperren einer Datenbankbearbeitung
Von Rukh75 im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 17.10.09, 01:26 -
Style-Flag von Controls
Von proprogger im Forum .NET Windows FormsAntworten: 2Letzter Beitrag: 02.01.06, 15:08 -
Globales Flag für INSERT oder UPDATE
Von C22 im Forum PHPAntworten: 2Letzter Beitrag: 26.10.05, 16:24





Zitieren

Login





