Новый вопрос SQL: существует ли эквивалент внешнего ключа для ссылок на столбцы, или логично хранить имена столбцов в виде строк в другой таблице? - PullRequest
1 голос
/ 08 февраля 2010

Отказ от ответственности: я новичок в SQL, просто открываю для себя большие возможности sqlite, встроенные в приложения.

Я проектирую небольшую базу данных для приложения, которое в первую очередь обрабатывает хранилище данных для построения графиков. Скажем, у меня есть несколько таблиц данных прибора (по одной для каждого типа прибора) со столбцом для каждого поля данных, такого как давление, температура, влажность и т. Д. Я хотел бы объединить эти таблицы данных, вытащить имена столбцов и назначить более понятный для человека столбец «описание», предоставленный пользователю для выбора независимых / зависимых переменных для построения графика. Получить имена столбцов в sqlite достаточно просто, но я не уверен, стоит ли мне сохранять результирующие имена (и более длинные описания) в виде другой таблицы в БД или в каком-либо списке в приложении. Если бы это была другая таблица в БД, я думаю, мне пришлось бы хранить имя столбца как строку ... разве есть какой-нибудь способ ссылки на столбец в SQL? Я не уверен, существует ли эквивалент внешнего ключа для столбцов, или это просто признак плохого проектирования базы данных, нуждающегося в реструктуризации.

Спасибо за любые предложения, переполнение стека.

Ответы [ 2 ]

2 голосов
/ 08 февраля 2010

Есть способы сделать самоанализ в SQL и извлечь имена таблиц и столбцов, но вы, вероятно, не хотите делать это таким образом, и детали реализации этого сильно зависят от вашей конкретной СУБД.

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

1 голос
/ 08 февраля 2010

То, что вы ищете, иногда называют «словарем данных». Если СУБД не предоставляет возможности аннотирования, вам нужно будет смоделировать их, что, вероятно, будет включать создание таблицы с именами таблиц и имен столбцов в ней. Это вполне разумно сделать.

Помните о трудностях с отслеживанием изменений в именах таблиц и добавленных или удаленных столбцах; встроенные средства только отслеживают данные в системном каталоге (информация «словаря данных», необходимая СУБД для отслеживания происходящего) и не отслеживают то, что находится в вашей таблице.

...