2 Stimmen

Wo werden SQL-Werte mit Querverweisen gespeichert?

Ich baue eine Filmdatenbank mit zwei Tabellen auf, eine enthält Filmtitel und die andere enthält Schauspielernamen. Wie kann ich die Daten miteinander verknüpfen?

Sollten beispielsweise Einträge in der Tabelle der Filmtitel eine Liste von Schauspielern für jeden Film enthalten, oder sollten Einträge in der Tabelle der Schauspielernamen eine Liste von Filmen für jeden Schauspieler enthalten?

3voto

Michael Berkowski Punkte 260923

Sie benötigen eine zusätzliche Tabelle, die die beiden verknüpft und mindestens die Film-ID und die Schauspieler-ID als Spalten enthält. Nehmen wir an, Ihre Schauspieler-Tabelle actor_id als Primärschlüssel hat und Filme hat movie_id als Primärschlüssel. Diese Tabelle könnte auch Informationen über den Schauspieler spezifisch für diesen Film enthalten, wie zum Beispiel den Namen des Charakters oder andere charakterbezogene Informationen.

CREATE TABLE actors_in_movies (
  /* Verwenden Sie das erforderliche Auto-Inkrement-Schlüsselwort für Ihr RDBMS */
  id INT NOT NULL PRIMARY KEY ,
  actor_id INT,
  movie_id INT,
  character_name VARCHAR(),
  other_character_info VARCHAR(),
  character_best_quote TEXT,
  FOREIGN KEY (actor_id) REFERENCES actors (actor_id),
  FOREIGN KEY (movie_id) REFERENCES actors (movies_id)
);

Um alle Filme abzufragen, in denen ein Schauspieler erscheint,

verwenden Sie etwas in der Art von:

SELECT
  actors.*,
  movies.name
FROM
  actors 
  JOIN actors_in_movies ON actors.actor_id = actors_in_movies.actor_id
  JOIN movies ON movies.movie_id = actors_in_movies.movie_id
WHERE actors.actor_id = 

Um alle Schauspieler in einem bestimmten Film abzufragen,

verwenden Sie etwas in der Art von:

SELECT
  actors.*
FROM
  actors 
  JOIN actors_in_movies ON actors.actor_id = actors_in_movies.actor_id
  JOIN movies ON movies.movie_id = actors_in_movies.movie_id
WHERE movies.movie_id = 

Um einen Schauspieler zu einem Film hinzuzufügen, fügen Sie eine Zeile in Ihre actors_in_movies-Tabelle ein:

INSERT INTO actors_in_movies (actor_id, movie_id) VALUES (..., ...);

1voto

dweiss Punkte 832

Verwenden Sie eine Kreuztabelle! Erstellen Sie eine Tabelle mit nur zwei Spalten: movieID, actorID.

0voto

Icarus Punkte 61809

Sie sollten eine dritte Tabelle haben, die ActorInMovie heißt. Diese Tabelle sollte 2 Spalten haben. ActorID, MovieID.

Dadurch können Sie eine viele-zu-viele Beziehung haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X