Вы можете использовать что-то, что называется STI : наследование одной таблицы. Я думаю, он подходит для таких мест, где несколько атрибутов являются общими, а некоторые - отдельными.
Таким образом, вы можете создать таблицу, назвать ее LibraryItem
, и она имеет тип, который может быть CD, book, dvd
и заголовок, и некоторые поля, которые будут заполнены для одного типа и пустыми для других.
Обычно лучше создавать отдельные таблицы для каждой, но иногда подход STI является более гибким. Вы можете легко добавить новый тип: например, LP или VHS, если они не вводят слишком много новых атрибутов / полей.