#! pesudocode
Entity {
id integer PRIMARY KEY,
name varchar,
...
}
Play {
id integer PRIMARY KEY REFERENCES Entity(id),
director varchar,
...
}
Concert {
id integer PRIMARY KEY REFERENCES Entity(id),
start datetime,
venue varchar,
band varchar,
...
}
Comment {
id integer PRIMARY KEY,
entity integer REFERENCES Entity(id),
comment_text varchar,
...
}
####
SELECT *
FROM Concert c
INNER JOIN Entity e ON c.id=e.id
####
SELECT *
FROM Play p
INNER JOIN Entity e ON p.id=e.id
####
SELECT *
FROM Comment k
INNER JOIN Entity e ON k.entity=e.id
INNER JOIN Play p ON k.entity=p.id
####
SELECT *
FROM Comment k
INNER JOIN Entity e ON k.entity=e.id
LEFT JOIN Play p ON k.entity=p.id
LEFT JOIN Concert c ON k.entity=c.id