Я буду честен - я остановился, когда прочитал ...
Я использовал перечисления везде, где я
обычно использует внешний ключ к
отдельная таблица - имя исполнителя, метка
имя и ряд других.
Если я правильно понимаю, это означает, что существует перечень всех художников. Но это перечисление художников определенно будет точкой вариации: будет больше художников. Я искренне сомневаюсь, что лейбл никогда не планирует увеличивать или изменять список артистов;)
Таким образом, на мой взгляд, это неправильное использование перечисления.
Я также не думаю, что целесообразно выполнять ALTER TABLE
для того, что неизбежно является довольно обыденным вариантом использования. (Создать / прочитать / обновить / уничтожить исполнителя) У меня нет номеров, подтверждающих это мнение.
Вы должны рассматривать это как вопрос о том, какая информация является сущностью или атрибутом сущности: для лейбла записи исполнители являются сущностями, а типы носителей могут не быть. Художники имеют много информации, связанной с ними (имя, жанр, награды, URL веб-сайта, старшинство ...), что говорит о том, что они являются сущностью, а не атрибутом другой сущности, такой как Release. Кроме того, художники создаются / читаются / обновляются и уничтожаются как часть обычного повседневного использования системы, что еще больше указывает на то, что они являются сущностями.
Сущности, как правило, получают свои собственные таблицы. Теперь, когда вы смотрите на Media Type этих выпусков, вы должны спросить себя, есть ли у Media Type какая-либо другая информация ... если у вас есть что-то большее, чем Name, у вас есть новая сущность. Например, если ваша система должна отслеживать, является ли тип медиа устаревшим, теперь есть 2 атрибута для типа медиа (имя устарело), и это должен быть отдельный объект. Если Типы Medai имеют только Имя в рамках того, что вы строите, то это атрибут другого объекта и должен быть только столбцом, а не таблицей. На этом этапе я хотел бы рассмотреть использование перечисления.