Database Reference
In-Depth Information
movies
genres
*movie_id
title
genres[]
name
position
hat viele
und gehört
zu vielen
actors
*actor_id
name
Abbildung 6: Unser Film-Empfehlungssystem
Sie werden sich erinnern, dass wir am ersten Tag verschiedene Zusatzpakete
installiert haben. Heute werden wir sie alle nutzen. Hier noch einmal die
Liste der benötigten Pakete:
tablefunc
,
dict
_
xsyn
,
fuzzystrmatch
,
pg
_
trgm
und
cube
.
Zuerst wollen wir die Datenbank aufbauen. Häufig baut man Indizes für
Fremdschlüssel auf, um „Reverse Lookups“ (z. B. für die Filme, in denen ein
Schauspieler mitgespielt hat) zu beschleunigen. Sie können auch ein
UNIQUE
-
Constraint für Join-Tabellen wie
movies
_
actors
festlegen, um doppelte Join-
Werte zu vermeiden.
postgres/create_movies.sql
CREATE TABLE
genres (
name
text UNIQUE
,
position
integer
);
CREATE TABLE
movies (
movie
_
id SERIAL
PRIMARY KEY
,
title
text
,
genre cube
);
CREATE TABLE
actors (
actor
_
id SERIAL
PRIMARY KEY
,
name
text
);
CREATE TABLE
movies
_
actors (
movie
_
id
integer
REFERENCES movies
NOT
NULL,
actor
_
id
integer
REFERENCES actors
NOT
NULL,
UNIQUE
(movie
_
id, actor
_
id)
);
CREATE INDEX
movies
_
actors
_
movie
_
id
ON
movies
_
actors (movie
_
id);