1
|
JYelton Melchior Blausand · 技术社区 · 14 年前 |
1
2
这是您正在考虑实现的一个非常麻烦的特性。我建议不要这样做,而是考虑使用第三方工具(如Red Gate的SQL Compare)编写更改脚本: http://www.red-gate.com/products/SQL_Compare/index.htm 如果您有疑问,请考虑下载该软件的试用版,并在两个数据库上执行结构差异脚本,其中有一些非常重要的差异。您将从结果中看到,对此类操作的考虑远不简单。 解决这类问题的另一种方法是使用EAV模型重新设计数据库: http://en.wikipedia.org/wiki/Entity-attribute-value_model (旋转以动态添加行,因此不会更改结构。它有自己的问题,但它非常灵活。) (要使用diff工具,您必须拥有所有DB版本的副本,并创建diff脚本,这些脚本将随新版本和升级一起发布和执行。这本身就是一个巨大的混乱。EAV就是这样一种方式。它错误地因为没有传统的DB结构那么好用而受到很多指责,但我已经多次成功地使用了它。事实上,我有一个符合HIPAA的EAV DB(SQL Server 2000),它已经投入生产六年多了,其中几个EAV表包含数千万行,并且在没有大的减速的情况下仍然很强劲。当然,我们不会对数据库做大量的报告。对于报表,我们有一个将数据扁平化为关系结构的导出。) |
2
2
我看到的常见解决方案是将版本信息存储在数据库的某个地方。也许有一张很小的桌子:
然后可以添加一行:
然后您可以创建一个SQL更新脚本(或一组脚本),它从版本更新数据库。
根据您希望支持的升级路径,您可以添加更多案例。很明显,您也可以将这个升级逻辑转移到C或者其他适合您的设计中。但是,将数据库版本信息存储在数据库中会使您更容易了解已经存在的内容,而不是单独查询所有的数据库结构。 |
3
0
如果您必须以依赖应用程序进行表更改的方式构建某些内容,那么您的设计是有缺陷的。您应该有一个传感器值的相关表(x1、x2等),然后您可以只添加另一个记录,而不必创建一个新列。 建议的子表结构 读数 身份识别 读取类型varchar(10) 读取_值int 然后表中的数据将为: ID读取类型读取值 1×1 2 1×23个 1×3 1 2 x1 7个 |
4
0
尝试Microsoft.sqlserver.management.smo
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |