#! 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