kostenloser Webspace werbefrei: lima-city


Sinnvolles Tabellendesign?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    pasi-b

    Kostenloser Webspace von pasi-b

    pasi-b hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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.
  4. Autor dieses Themas

    pasi-b

    Kostenloser Webspace von pasi-b

    pasi-b hat kostenlosen Webspace.

    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ß
  5. 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
  6. tafelrunde-der-neuzeit

    tafelrunde-der-neuzeit hat kostenlosen Webspace.

    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
  7. 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
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!