Я бы, скорее всего, сохранил информацию в Relational Database Management System реляционно; как можно ближе к 3-й нормальной форме или лучше. Это означает, что у меня будет две таблицы.
В одной таблице перечислены доступные параметры. Во второй таблице перечислены все параметры, связанные с этим объектом, который обращается к 5 веб-таблицам.
Причина, по которой я делаю это, имеет отношение к возможности расширения приложения. Если дополнительные веб-таблицы становятся доступными или если другие объекты со временем нуждаются в доступе к различным веб-объектам, эта модель будет поддерживать рост как по количеству веб-объектов, так и к объектам, обращающимся к веб-объектам, без необходимости касаться кода.
Теперь, если это ГАРАНТИРОВАНО, чтобы этого не произошло, я мог видеть, как хранить значения в одном поле, где имеет место положение; возможно, используя тип данных «SET». Но, учитывая, что есть несколько гарантий, я бы, скорее всего, не воспринял этот подход только потому, что он не масштабируется без изменения кода и не работает также под томом.
Для решения ваших конкретных вопросов:
1) Является ли это хорошая идея? Есть ли лучшие решения?
Лично я считаю, что идея плохо в том, что она не может легко масштабироваться без изменения кода; и я не вижу, как ENUM может храниться в одном поле без использования заданных типов данных. (Эти два хорошо работают вместе, но я не думаю, что видел ENUM без установки при сохранении нескольких значений в одном поле). Я предпочитаю более реляционный метод. Однако, если мы знаем, что он никогда не вырастет, я нахожу подход разумным.
2) Какое поле мне нужно использовать?(Я думал, ENUM)
Я бы предпочел установить тип данных. Я думаю, что было бы легче масштабировать и более последовательно. Я не уверен, как вы будете мультивыбирать тип данных ENUM; без сохранения его реляционно или с использованием заданных типов данных. Если вы добавляете новую таблицу для хранения значений ENUM, это более или менее то же, что и я бы рекомендовал.
Но мое воздействие и использование для ENUM ограничено в этом контексте; поэтому у меня может не быть опыта, который бы сделал это разумным подходом.
Вам понадобится присоединиться к этой таблице к другим столам? Как будет использоваться эта ссылка (просто нужно знать, что ссылка существует (почему бы не левое объединение работать?). Может ли число таблиц расти или сокращаться? Не могли бы вы использовать таблицу xref, в которой PK выходил из таблицы и создавая запись во вторичной таблице с именем pk и таблицы? В общем случае перегрузка столбца в СУБД не является разумной. Что относительно типа данных «SET», если вы ДОЛЖНЫ http://dev.mysql.com/doc/ refman/5.7/en/set.html – xQbert
Этот вопрос может немного разъяснить. Утверждения «каждая строка таблицы может ссылаться на 5 других таблиц» и «каждая из пяти таблиц, если есть ссылки на строку», похоже противоречивые или, в лучшем случае, незначительно связанные.Какие ссылки, которые? Зачем компрометировать его с битовым полем, когда на самом деле ссылаться, вам нужно будет иметь поле для ссылки. – Uueerdo
@xQbert Я отредактировал вопрос (надежда более ясна) – genespos