Использование таблицы для предоставления значений перечисления в MySQL? - PullRequest
8 голосов
/ 21 января 2010

Есть ли способ сопоставить содержимое одного из столбцов таблицы MySQL с перечислением в другой таблице в MySQL? Я подумал, что это не составит труда, но, похоже, нет никакой информации, которую я могу найти по этому вопросу.

Любой совет или помощь по этому вопросу было бы круто, и если это невозможно, кто-нибудь знает внутреннюю причину, по которой это невозможно?

С наилучшими пожеланиями всем:)

Gary

Ответы [ 2 ]

10 голосов
/ 21 января 2010

Тип enum удобен как одноразовый, но не подходит для нескольких таблиц и не является стандартным SQL. Лучше всего использовать обычные таблицы и отношения:

  1. Определить новую таблицу для хранения списка возможных значений; давайте назовем это Master1
  2. В двух других таблицах (назовем их Table1 и Table2), не делайте поле enum ; просто сделайте его нормальным полем с отношением внешнего ключа к Master1.

Отношение внешнего ключа будет ограничивать список возможных значений; и поскольку внешние ключи и отношения являются абсолютно стандартным SQL, этот подход будет иметь другие преимущества - например, инструменты отчетности могут распознавать внешний ключ и понимать, как использовать связанные данные.

0 голосов
/ 21 января 2010

Если он этого не делает, не делайте этого

Конечно, вы просто хотите получить таблицу возможных ключей, а затем сопоставить их с внешним ключом.

Если вам нужна таблица с возможными значениями перечисления и ограничениями, перейдите к группированию по другой таблице или groupid в той же таблице (если члены группы уникальны).

Пахнет как вонь стола, хотя ПРИСОЕДИНЯЙТЕСЬ. Может быть, лучше всего сделать это в хранимой процедуре или в коде приложения и сопоставить его с собственным значением?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...