Меры предосторожности при нормализации базы данных - PullRequest
0 голосов
/ 03 марта 2011

Хорошо. Поэтому на моем рабочем месте в нашей базе данных sql есть таблица продуктов для хранения информации о наших продуктах (см. Рисунок). Однако компания, которая создала таблицу (наш бывший веб-поставщик), очевидно, не верила в использование более одной таблицы для хранения данных. Так что это составляет таблицу из 201 столбца со столбцом практически для всех связанных и несвязанных фрагментов данных, о которых вы можете подумать. Очевидно, я не хочу, чтобы это было так больше. Я создал логические таблицы для разделения данных, которые содержат столбцы из оригинала. Как мне заполнить новые таблицы данными из оригинала? Я знаю, что это своего рода общий вопрос, и я ищу общий ответ. Мне не нужны подробности, мне просто нужно указать в правильном направлении. Спасибо

Ответы [ 2 ]

1 голос
/ 03 марта 2011

Поиск рефакторинга базы данных в Интернете.

По сути, не создавайте таблиц и не перемещайте данные. Вместо этого создайте сценарии SQL, которые выполняют эту работу в дополнение к представлению SQL, которое виртуально воссоздает исходный макет таблицы. Также некоторый код, который проверяет это представление, вероятно, сравнивая исходную таблицу строка за строкой. Затем запустите сценарий, проверьте данные, и, когда у вас все получится, удалите таблицу монстров и переименуйте представление, чтобы занять его место.

Надеюсь, вы знаете о SELECT INTO, чтобы получить данные в новые таблицы. Вы бы сделали такие вещи, как SELECT DISTINCT clothingtype FROM bigtable INTO clothingtypes;

0 голосов
/ 03 марта 2011

Вы выбираете столбцы, которые хотите вставить, для всех или некоторых строк из исходной таблицы и вставляете этот набор в таблицу назначения. Вы знакомы с операторами SQL UPDATE и INSERT? РЕДАКТИРОВАТЬ: вы хотели бы переместить только те столбцы, которые не относятся к каждой строке; если столбец относится только к некоторым строкам, эти строки / столбцы являются кандидатами на перемещение, если целью является нормализация.

...