Sql 重构数据库并保留现有数据的最佳实践?
我一直在开发一个数据密集型应用程序,它有大约250个表。最近需要进行一些设计更改。一些设计更改需要添加新表,并以1-N的方式将这些表与现有表(foregin键)链接,以实现父子关系(在ORM中) 就拿这个例子来说。目前的设计允许每个合同租用一辆车。新设计要求在同一合同中有多辆车,且价格不同 因此,现在需要将一个表中的数据放入另外两个表中 我已经完成了对模式的更改,但我无法将这些更改部署到测试环境中,直到找到转换现有数据并将其转换为新设计格式的方法 我目前的进程Sql 重构数据库并保留现有数据的最佳实践?,sql,sql-server,database,linq-to-sql,orm,Sql,Sql Server,Database,Linq To Sql,Orm,我一直在开发一个数据密集型应用程序,它有大约250个表。最近需要进行一些设计更改。一些设计更改需要添加新表,并以1-N的方式将这些表与现有表(foregin键)链接,以实现父子关系(在ORM中) 就拿这个例子来说。目前的设计允许每个合同租用一辆车。新设计要求在同一合同中有多辆车,且价格不同 因此,现在需要将一个表中的数据放入另外两个表中 我已经完成了对模式的更改,但我无法将这些更改部署到测试环境中,直到找到转换现有数据并将其转换为新设计格式的方法 我目前的进程 添加3个新表nContract、n
这方面的最佳实践或流程是什么?我做错什么了吗?我最终使用了FluentMigrator 它允许我进行类似实体框架的迁移(请参阅:RubyonRails活动记录迁移) 大多数DDL都可以用流畅的格式在.NET中编写。它支持事务中的上下迁移,甚至支持用于数据迁移的完整SQL脚本
最好的是,所有迁移脚本都可以放在源代码管理中,甚至可以进行测试。行数据最好在数据库中处理。什么事让你烦恼?你认为你的sql技能比你的orm技能低吗?这真的是因为我觉得处理对象和关系更舒服。我可以在SQL中很好地进行SQL DDL和查询。但其中一些要求需要临时表来存储信息,然后从中复制。我对内存计算和智能处理对象中的信息更有信心。”“我唯一的问题是,我不习惯用SQL编写第2部分。我想利用ORM和.Net的强大功能,为比本例更复杂的场景执行更智能和复杂的任务“’没有比使用T-SQL更快的方法(就执行性能而言)。而且您可以处理事务,因此您可以根据需要重试多次,直到解决方案工作为止(如果没有,请回滚,然后重新开始)。IMO使用一些抽象技术这样做只是浪费精力和时间。ORM不再是“智能的”“而不是T-SQL。@Endrju没有说是。最终它将转换为TSQL。ORM也支持完全回滚和事务。这只是我喜欢的对象内存处理。我可以访问很多数据类型和集合(例如哈希)在.NET中,这将使我更容易做我想做的事情。如果我纯粹在TSQL中做,我将需要临时表来实现同样的事情。