Sinnvolles Tabellendesign?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
abfragen
ausgeben
datenbank
eintragen
film
filmen
komma
meinung
methode
problem
relation
schauspieler
spalte
spalten
string
tabelle
trennen
url
vorname
-
Hallo zusammen!
Ich habe ne Frage, folgendes.
Hier mal ein grobes Beispiel.
Schauspieler eines Filmes, soll ich die Namen in der Tabelle durch Kommas trennen, in der Spalte Schauspieler z.B
ID 6
TITEL Der Hobbit
SCHAUSPIELER: Martin Freeman, Ian McKellen, Richard Armitage, Ken Scott, Graham McTavish
Oder soll ich eine eigene Tabelle anlegen, mit z.B den Spalten
ID - FILMID - SCHAUSPIELER
1....... 6...........Martin Freeman
2....... 6...........Ian McKellen
3....... 6...........Richard Armitage
4....... 6...........Ken Scott
5....... 6...........Graham McTavish
das heißt es wird immer ein neuer Eintrag angelegt mit den einzelnen Schauspielern in den Filmen, sodass ich am Ende auch einfach abfragen kann,
"ok Hans Dampf hat mitgespielt in: Film 1, Film 2, Film 3" wie wäre es einfacher?
Bzw. ist die zweite Methode effektiv? Und wie aufwendig ist die erste?
Gruß Pascal
Beitrag zuletzt geändert: 4.9.2014 19:25:36 von pasi-b -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Einfacher wäre eigentlich meiner Meinung nach deine 2. Variante, obwohl ich die 1. bevorzuge. Ist meiner Meinung nach übersichtlicher in der Tabelle.
Bei der ersten musst du nur nach der Abfrage mittels PHP im string suchen und die Schauspieler ggf. trennen.
Willst du es allerdings so ausgeben wie du gesagt hast, wäre die uweite Methode die sinnvollste, da du dann einfach nur nach ner Film ID suchen musst. -
cannadesign schrieb:
Einfacher wäre eigentlich meiner Meinung nach deine 2. Variante, obwohl ich die 1. bevorzuge. Ist meiner Meinung nach übersichtlicher in der Tabelle.
Bei der ersten musst du nur nach der Abfrage mittels PHP im string suchen und die Schauspieler ggf. trennen.
Willst du es allerdings so ausgeben wie du gesagt hast, wäre die uweite Methode die sinnvollste, da du dann einfach nur nach ner Film ID suchen musst.
Ok, vielen Dank!
Ich denke ich werde es einfach kombinieren.
In der Maintabelle die Schauspieler mit Komma eintragen, falls man mal was exportieren will etc. und dann parallel dazu noch die Schauspielertabelle in der nur die Abfrage geschieht.
Am besten dann erst den Film eintragen, dann den String trennen, dann nochmal den Film abfragen (zwecks Film ID) und dann den getrennten String "Schaupieler 1, Schauspieler 2, Schauspieler 3" einzeln in die Tabelle Schauspieler eintragen oder?
Gruß -
nanu warum doppelt Speichern?
selbst für den vereinfachten Export (erspart vielleicht 3 Zeilen Quelltext)
macht das nicht unbedingt sinn da so nur unnötig Speicher verbraucht wird
und es bei Änderungen der Inhalte zu inkonsistenten Datensätzen kommen kann...
zur Themen Ausgangsfrage Sinnvoll ist eigentlich nur die 2. Variante
auch wenn sie nicht ganz so übersichtlich ist (geschmackssache?) und in der Umsetzung zu
Anfang etwas umfangreicher ist zahlt sich die Variante im Späteren verlauf
eines Projektes immens aus allein schon durch das einfachere Erweitern der Datenbank Struktur
und des leichten bzw. optimierten Datenzugriff
Gruß
VA / Akashia -
Also das mit den Schauspielern in einer Spalte geht gar nicht!
Ich gehe davon aus, du machst das aus Übungszwecken und wenn es auch nur ein bsichen komplizierter wird, gibt es Probleme.
Das wichtigste bei Datenbanken und Programmieren ist DRY (Don´t repeat yourself) wiederhohle dich nicht selbst.
Keine Daten drüfen in einer Datenbank doppelt vorkommen, kein Code darf 2 mal geschribene werden.
SO nun noch mal zu deinem Problem. Ich empfehle folgendes Design:
Tabelle schauspieler mit id und name als spalten
Tabelle filme_schauspieler mit id, schauspieler, film
Tabelle filme mit id, name, etc
Man sagt filme hat eine ManyToMany Relation zu schauspieler durch die Tabelle filme_schauspieler -
Bei Datenbanken ist es immer sinnvoll, jede Teil-Information in eigene Spallte. Und keine Information doppelt. Also:
id--Filmid--Schauspielerid
Filmid--Filmname
Schauspielerid--Vorname--Nachname
So kannst du auch nur nach dem Vornamen suchen und einfach weitere Spalten hinzufügen und es vermeidet Fehler.
w3j -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage