Как обратиться к конкретному столбцу таблицы из другой записи БД? - PullRequest
0 голосов
/ 29 декабря 2010

Я хочу определить дополнительные свойства для столбцов в таблицах моей базы данных MYSQL.

Например, я хочу определить единицы измерения столбцов моей базы данных.

Для этого я планирую создать эту таблицу:

COLUMN_UNIT
id
{table_name, column_name} unique constraint
unit_id

(я не использую составной PK, потому что моей структуре требовалось поле идентификатора с автоматическим увеличением)

Другие таблицы, которые я мог бы иметь:

UNIT
id
unit_name

WEATHER_DATA
temperature
wind_speed
...

SENSOR_DATA
intensity
frequency
...

Является ли использование имени столбца и имени таблицы лучшим способом ссылки на другой столбец?

Спасибо!


ОБНОВЛЕНИЕ:

В моем случае все записи в столбце будут иметь одинаковое значение свойства. Это мудрое свойство столбца. Таким образом, для температуры все значения будут, например, в градусах С.

1 Ответ

1 голос
/ 29 декабря 2010

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

WEATHER_DATA
temperature
temperature_unit_id (FK to UNIT)
wind_speed
wind_unit_id (FK to UNIT)

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

Надеюсь, это поможет

EDIT:

вы можете использовать мета-таблицы, которые являются просто таблицами, которые хранят дополнительную информацию о вашей таблице. Mysql использует свои собственные метатаблицы для хранения количества строк, типов столбцов и т. Д. Некоторые платформы используют свои собственные мета-таблицы (например, Django). ) .. Но вы можете создавать свои собственные мета таблицы, они такие же, как и любые другие таблицы, в вашем случае это может быть что-то вроде

WEATHER_META
temperature_unit_id FK
wind_unit_id FK

и таблица ПОГОДЫ будет

WEATHER_DATA
id
temperature
wind_speed
...

Или, если хотите, вы можете создать одну таблицу Meta для всех ваших таблиц. Что-то вроде

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