Нет ничего неуместного в том, чтобы иметь suite_id
, который можно обнулять. Это в основном говорит, что в вашей модели данных комната может быть частью пакета. Это прямое представление о ситуации и, следовательно, элегантно.
Альтернативы намного хуже. Подумайте на минуту, если хотите, как может выглядеть модель, если вы разделите комнаты на разные таблицы. Один для люксов, а другой для не люксов. Внезапно ваш критерий поиска должен пройти две таблицы. Вы реплицируете информацию по двум таблицам (если на самом деле разница только в одном идентификаторе). Это НЕ типично для проблемы, а просто приводит к большому труду и потенциальному снижению производительности двух поисковых запросов (предположительно в UNION) для получения ваших результатов. Да, и если вы добавляете общее свойство, вам нужно добавить его в двух местах и выполнить все необходимые работы по обслуживанию, чтобы дважды распознать этот новый столбец.
Другой альтернативой может быть включение всех полей, которые относятся к «комплекту», в основную таблицу. Однако это означает, что в каждой комнате, которая не была частью набора, содержались избыточные данные. Как вы сказали, они редко входят в комплект, поэтому в большинстве этих записей будет мертвое пространство. Еще раз, это также не является репрезентативным для ситуации.
Решение, к которому вы пришли, является правильным и надежным.