#sql #sql-server-2008
#sql #sql-server-2008
Вопрос:
Я только что закончил некоторые изменения в базе данных, и теперь мне нужно перенести данные, чтобы они соответствовали новому дизайну.
У нас была таблица транспортных средств со столбцом классификации. Столбец классификации был строкой, которую кто-то ввел в поле. Это не был столбец с внешним ключом.
Теперь я изменил дизайн, чтобы разрешить транспортному средству иметь несколько классификаций (да, бизнес-правила позволяют это), и классификации перемещаются в таблицу поиска. Столбец классификации будет удален из таблицы транспортных средств, заменен таблицей объединения M: M, чтобы включить несколько категорий для каждого требования к транспортному средству. Таблица классификации была построена с использованием уникальных значений из столбца классификации в таблице транспортных средств.
Перейдем к вопросу. Как мне построить таблицу M: M? Какой SQL используется для этого?
На мой взгляд, процесс будет следующим: для каждой строки в таблице транспортных средств б) найдите строку классификации в новой таблице классификации в) вставьте идентификатор классификации и идентификатор транспортного средства в таблицу VehiclesClassifications. Затем, после проверки данных, я бы вручную удалил столбец классификации из таблицы vehicle.
Спасибо за любые предложения!
Правка 1: Я создал таблицы. Я просто спотыкаюсь о инструкции SQL.
Комментарии:
1. Вы спрашиваете о процессе или о том, как его реализовать? У вас есть правильный процесс — вот как это должно быть сделано.
Ответ №1:
Как мне построить таблицу M: M?
Угадывание некоторых типов данных, имен столбцов и т.д.
create table vehicle_classifications (
vehicle_id integer not null references vehicles (vehicle_id),
classification_id integer not null references classifications (classification_id),
primary key (vehicle_id, classification_id)
);
Затем что-то вроде
insert into vehicle_classifications (vehicle_id, classification_id)
select t1.vehicle_id, t2.classification_id
from vehicles t1
inner join classifications t2 on t1.classification = t2.classification
Затем, после проверки данных, я бы вручную удалил классификацию
столбец из таблицы vehicle.
Прежде чем делать это, убедитесь, что у вас есть ограничения внешнего ключа для новой таблицы объединения.