Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何更改数据库以适应这种新设计?_Sql_Sql Server 2008 - Fatal编程技术网

Sql 如何更改数据库以适应这种新设计?

Sql 如何更改数据库以适应这种新设计?,sql,sql-server-2008,Sql,Sql Server 2008,我刚刚完成了一些数据库更改,现在需要迁移数据以适应新的设计 我们有一个带有分类栏的车辆表。分类列是有人在字段中键入的字符串。它不是外键列 现在,我更改了设计,允许车辆具有多个分类(是的,业务规则允许这样做),并且将分类移动到查找表中。分类列将从车辆表中删除,并替换为M:M联接表,以支持每个车辆需求的多个类别。已使用车辆表中“分类”列中的唯一值构建分类表 关于这个问题。如何构建M:M表?SQL是如何做到这一点的 在我看来,这个过程是:对于车辆表中的每一行b)在新的分类表中查找分类字符串c)将分类I

我刚刚完成了一些数据库更改,现在需要迁移数据以适应新的设计

我们有一个带有分类栏的车辆表。分类列是有人在字段中键入的字符串。它不是外键列

现在,我更改了设计,允许车辆具有多个分类(是的,业务规则允许这样做),并且将分类移动到查找表中。分类列将从车辆表中删除,并替换为M:M联接表,以支持每个车辆需求的多个类别。已使用车辆表中“分类”列中的唯一值构建分类表

关于这个问题。如何构建M:M表?SQL是如何做到这一点的

在我看来,这个过程是:对于车辆表中的每一行b)在新的分类表中查找分类字符串c)将分类ID和车辆ID插入VehiclesClassifications表中。然后,在检查数据之后,我会手动从vehicle表中删除classification列

谢谢你的建议

编辑1:我已经创建了表。我只是被SQL语句绊倒了

如何构建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
然后,在检查数据之后,我会手动删除分类 车辆表中的列


在执行此操作之前,请确保新联接表上有外键约束。

您是在询问该过程还是如何实现它?你有正确的流程,这是应该做的。