当前位置: 首页 > 面试题库 >

在数据库架构中弃用列的最佳方法是什么?

史景铄
2023-03-14
问题内容

在阅读了有关数据库架构迁移和版本的许多问题之后,我提出了一种在更新过程中安全地更新数据库架构的方案。基本思想是,在更新期间,我们将数据库导出到文件中,删除并重新创建所有表,然后重新导入所有内容。那里没有什么花哨或冒险的地方。

问题在于该系统在某种程度上是“病毒的”,这意味着仅 添加
列或表是安全的,因为删除列或表会在重新导入数据时引起问题。通常,忽略这些列就可以了,但问题是实际上已重构了许多被删除的项,而代码中旧项的存在使其他程序员误以为他们可以使用它们。

因此,我想找到一种方法可以将列或表标记为已弃用。在理想情况下,将在更新模式时标记不赞成使用的对象,但是在下一次更新期间,我们的备份脚本将不会选择那些已标记方式的对象,从而使我们最终可以逐步淘汰模式的这些部分。

我发现MySQL(可能还有其他数据库平台,但这是我们正在使用的平台)支持字段和表的COLUMN属性。这是完美的,除了我无法弄清楚如何以有意义的方式实际使用它。我该如何编写SQL查询来获取所有
包含包含单词“ deprecated”的注释匹配文本的列名?还是我看这个问题全错了,而错过了一个更好的方法呢?


问题答案:

也许您应该重构为在表上使用视图,在这些视图中,视图永远不包含降级的列。



 类似资料:
  • 问题内容: 我目前正在使用以下设置在嵌入式数据库上运行测试之前在嵌入式数据库中创建架构 在我的应用程序上下文中 createSchema.sql hibernate属性 我的问题是这是最好的方法。或者我可以在属性中使用其他架构名称吗?或在jdbc:embedded-database元素中设置架构名称 问题答案: 默认情况下,HSQL创建一个称为PUBLIC的架构。来源:HSQL文档 看到模式名称在

  • 问题内容: 我正在尝试确定通过JDBC ping数据库的最佳方法。“最好”是指快速且低开销。例如,我考虑过执行以下命令: 但是我相信DUAL表是特定于Oracle的,并且我需要一些更通用的东西。 请注意,它具有一个方法,但是javadoc指出该方法不能用于测试连接的有效性。 问题答案: 是的,那只能是Oracle,但是在JDBC中没有通用的方法可以做到这一点。 大多数连接池实现都有一个配置参数,您

  • 我有一个游戏,在MySQL数据库中存储boss在简单模式和硬模式下的杀人记录。有14个老板。我想存储一个球员杀死一个老板的次数和难度。我有几个选择,我可以看到。。 为每个boss以及每个难度在表中创建一个单独的列。例如。 创建两个存储数字序列的字段,这些数字可以稍后提取出来,以便在PHP中进行比较。其中easykills是一个由28个字符组成的字符串,每2个字符就有一个计数器,用于计算boss被杀

  • 问题内容: 在MySQL数据库中存储IP地址的最佳字段类型和长度是什么? IPv6呢? 问题答案: 将IP存储为,然后使用和功能存储/检索IP地址。 样例代码:

  • 我正在尝试为一个Saas应用程序建模,在这个应用程序中,我将让不同的公司使用这些服务。我有点困惑于为这种类型的服务建模我的猫鼬数据库的最佳方式。 所以这个模型有点像 为这样的应用程序建模的最佳方式是什么? 我是否应该为用户、项目等创建不同的模型,并将公司唯一ID附加到该公司内的所有用户或项目。也可以在公司模型中引用这些用户或项目。差不多 或者 只需在公司模式中引用用户和项目模式,而不需要单独的模型

  • 问题内容: 我想在数据库中存储大量声音文件,但是我不知道这是一个好习惯。我想知道这样做的利弊。 我还考虑了与这些文件建立“链接”的可能性,但这也许会带来比解决方案更多的问题。对此方向的任何经验都将受到欢迎:) 注意:数据库将是MySQL。 问题答案: 我所知道的每个存储大量大文件的系统都将它们存储在数据库的外部。您将文件的所有可查询数据(标题,艺术家,长度等)以及文件的部分路径存储在数据库中。当需