Как преобразовать таблицу данных SQL в таблицу указателей? - PullRequest
1 голос
/ 24 мая 2009

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

Я хочу преобразовать его в таблицу с кортежами (id, lastid, firstid, занимаемые), где я сохраняю только указатели на другие таблицы, которые содержат фактические значения. Я прошу прощения, если пример домена имен и профессий не подходит лучше всего для этой операции.

Очевидно, что для создания других таблиц, в которых будут храниться данные, мне нужно получить все уникальные фамилии и вставить их в новую таблицу с автоматически сгенерированным ключом. То же самое с именами и профессиями.

Сделав это, существует ли единственное преобразование, которое может генерировать новую таблицу, содержащую указатели (например, внешние ключи)?

Реализация использует SQLite, если это имеет значение.

1 Ответ

1 голос
/ 24 мая 2009

Предполагая, что ваши таблицы для фамилий / имен и профессий: Lnt, Fnt и Occ, каждая из которых содержит всего два столбца, поле id и значение:

REPLACE INTO TheTable (last, first, occup)
SELECT Lnt.id, Fnt.id, Occ.id
FROM TheTable
JOIN Lnt ON (last=Lnt.value)
JOIN Fnt ON (first=Fnt.value)
JOIN Occ ON (occup=Occ.value)
...