Скажем, у меня есть таблица со следующими столбцами:
id | address | city | state
Теперь предположим, что я хочу взять данные из этой таблицы и переместить их в 3 новые таблицы:
Таблица 1 («адреса»):
id | address | city_id
Таблица 2 («города»):
id | city | state_id
Таблица 3 («состояния»):
id | state
Я видел несколько ответов, связанных с изменяющими данные CTE, но они не очень ясны, и мне трудно понять, как я бы сделал что-то вроде того, что я описал выше.
Может быть. Я вообще не понимаю, как это сделать. После того, как я погуглил еще немного, похоже, что я пытаюсь нормализовать данные. На данный момент я пытаюсь найти понятное объяснение того, как на самом деле это сделать. Большая часть того, что я нахожу, - это объяснения самой концепции.
1) создать новые таблицы 2) заполнить их 3) отбросить старую таблицу 4) прибыль!
Нет универсального подхода к рефакторингу, но написание кода для вашей конкретной проблемы не должно быть для вас таким сложным :)
@wildplasser, похоже, это не так просто. Как мне заполнить третий столбец таблицы 2 идентификаторами из таблицы 3, если эти идентификаторы появятся позже (когда я заполню таблицу 3)?
Это просто: оба столбца id должны быть последовательными, а другой столбец (и) являются естественным ключом для них. Единственная сложность - en.wikipedia.org/wiki/Paris_(disambiguation), что подразумевает составной ключ для вашего table2.
Честно говоря, я совсем не пытаюсь быть придурком, но, хотя вам это может показаться простым, для меня это непросто. Вероятно, в вашем путешествии было время, когда для вас это тоже было непросто. Вы случайно не знаете, где я могу увидеть пример запросов, которые дадут результат, который я ищу?
См., Например, stackoverflow.com/a/37734162/905902.





Где именно проблема? Это должно быть решено с помощью некоторых запросов INSERT и SELECT в вашем приложении.