Sql 如何更改数据库以适应这种新设计?
我刚刚完成了一些数据库更改,现在需要迁移数据以适应新的设计 我们有一个带有分类栏的车辆表。分类列是有人在字段中键入的字符串。它不是外键列 现在,我更改了设计,允许车辆具有多个分类(是的,业务规则允许这样做),并且将分类移动到查找表中。分类列将从车辆表中删除,并替换为M:M联接表,以支持每个车辆需求的多个类别。已使用车辆表中“分类”列中的唯一值构建分类表 关于这个问题。如何构建M:M表?SQL是如何做到这一点的 在我看来,这个过程是:对于车辆表中的每一行b)在新的分类表中查找分类字符串c)将分类ID和车辆ID插入VehiclesClassifications表中。然后,在检查数据之后,我会手动从vehicle表中删除classification列 谢谢你的建议 编辑1:我已经创建了表。我只是被SQL语句绊倒了 如何构建M:M表 猜测某些数据类型、列名等Sql 如何更改数据库以适应这种新设计?,sql,sql-server-2008,Sql,Sql Server 2008,我刚刚完成了一些数据库更改,现在需要迁移数据以适应新的设计 我们有一个带有分类栏的车辆表。分类列是有人在字段中键入的字符串。它不是外键列 现在,我更改了设计,允许车辆具有多个分类(是的,业务规则允许这样做),并且将分类移动到查找表中。分类列将从车辆表中删除,并替换为M:M联接表,以支持每个车辆需求的多个类别。已使用车辆表中“分类”列中的唯一值构建分类表 关于这个问题。如何构建M:M表?SQL是如何做到这一点的 在我看来,这个过程是:对于车辆表中的每一行b)在新的分类表中查找分类字符串c)将分类I
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
然后,在检查数据之后,我会手动删除分类
车辆表中的列
在执行此操作之前,请确保新联接表上有外键约束。您是在询问该过程还是如何实现它?你有正确的流程,这是应该做的。