问题标签 [refactoring-databases]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
341 浏览

refactoring - 如何重新启动 flyway 脚本版本

我的 flyway 脚本变得有点广泛,擦除和重新创建模式需要一段时间。它变得越来越笨拙,我认为其他人已经用 flyway 遇到了这种情况。

我想重新开始脚本:创建当前数据库的快照,给它一个版本,然后从那里重新开始。

但是对于生产数据库,我永远不会擦除模式,我不希望它每次都解析历史,并在版本号上发生冲突。我想我需要重新创建schema_version表格,但这似乎有点挑剔。有没有人这样做过,你能给我关于你的过程的说明吗?

谢谢你。

0 投票
2 回答
234 浏览

php - 如何使用数据库重构软件保持重构的顺序?

我一直在尝试使用LiquibaseDBDeploy。我更喜欢 Liquibase,因为它的非 SQL 接口(即我可以只使用 JSON 或 Yaml 变更集)。但是,这两个软件都有一个问题。

Liquibase 工作流程

  1. 我创建了一个主变更日志。它所做的只是includeAll一个文件夹,其中包含带有小变更集的小文件。
  2. 然后我创建变更集,并在它们前面加上一个数字(例如时间戳,或简单的整数,如 1、2 等)。

DBDeploy 工作流程

  1. 我刚开始制作 delta sql 文件,前缀与上面的数字 2 相同。

问题

好吧,这个问题是如此微不足道,我觉得问它很愚蠢,但它就在这里。考虑这种情况:

  1. 我创建了一个分支来处理我的功能,比如向系统添加订单。
  2. 我的同事 Bob 创建了自己的分支来向系统添加产品。
  3. 当需要合并时,不知道谁的变更集或增量 sql 将首先运行。这可能会破坏数据库。

这不会发生在任何人身上吗?如果是这样,在PHP领域解决它的方法是什么?

谢谢。

0 投票
1 回答
1670 浏览

visual-studio-2012 - SQL Server Data Tools 忽略架构比较上的重构

我遇到了与此处描述的问题看似相同的问题:SSDT Refactor Rename is ignored by the Schema Comparison script generation。本质上,SQL Server Data Tools 的重构组件不适用于架构比较/更新。例如,不是重命名表,而是删除具有旧名称的表并创建具有新名称的表。不幸的是,我没有看到该问题的公认答案。我发现了一个类似的问题,这似乎是由同一个人在 MSDN 上提出的;请参阅:架构比较脚本生成忽略重构重命名。同样,它看起来不像提出了一个可接受的答案。我真的很想弄清楚如何让这个功能发挥作用。有人有想法吗?

0 投票
1 回答
77 浏览

database-design - 使用代理键重构数据库

我们有一个包含大约 800 个表和 4000 个在过程和函数之间的数据库,并大量使用复合键。问题是:您是否会逐个更改表格和所有过程/功能以使用复合键的代理键?感谢您的任何建议。

其原因是:检索数据缓慢,重建索引缓慢。但我不确定这些是否是一个很好的理由......

0 投票
2 回答
41 浏览

sql - 减少/总结和替换带时间戳的记录

我有一个 SQL 表,其中包含服务器性能数据的时间戳记录。多台服务器每 1 分钟轮询一次并存储此数据。我想长时间保留数据,但减少超过六个月的数据记录数。

例如,我有一些像这样的旧记录:

对于旧数据,我希望能够将这些数据从每分钟减少到每 10 分钟或可能每小时。

我最初的假设是,我会平均 10 分钟内的时间值,并在删除旧记录后创建一个新的时间戳记录。我可以创建一个为新汇总记录生成插入语句的 sql 查询吗?该查询会是什么样子?

或者有没有更好的方法来完成这个总结工作?

0 投票
2 回答
1203 浏览

visual-studio-2017 - 重命名系统版本表中的列 Visual Studio SQL 项目

我希望 Visual Studio 的 SQL Schema Compare 生成增量 SQL 以更新生产数据库,包括在系统版本控制(临时表)上的表上重命名列。

在 Visual Studio SQL 项目中使用重构确实会在重构日志文件中创建一个条目,并将为该重命名的字段生成正确的 sp_rename SQL。但是,关联的历史表不会重命名字段 - 它会进行删除和添加,一旦表中有实际数据,这将无法正常工作。另外,它还可以使表格彼此不同步。

也许我可以修改重构日志 XML 以表明它是一个附加了历史表的字段?下面的 XML 显示 Elementtype 是“SqlSimpleColumn”。我还有其他选择吗?

系统:Visual Studio Community 2017 SQL 服务器:Azure SQL 数据库 V12

0 投票
1 回答
56 浏览

mysql - 重命名/重构数据库元素 - 仅存在脚本但不存在数据库

我有准备好创建数据库的脚本 (.sql) 文件(创建模式、过程、添加测试数据)。

我还针对这些脚本设置了编码标准/约定。

例如:表名不应以“_tbl”结尾,所有 SQL 关键字(SELECT、UPDATE、FROM)都应大写。

是否有最好/最简单的方法来重命名这些(根据我拥有的编码标准),这样当我重命名数据库对象时,引用重命名对象的其他对象应该自动更新为新名称

找到几个链接来服务这个。但想确认这是最好和最简单的方法。或者比这更好的方法..

例如,如果我重命名表中的列,则引用该列的任何存储过程都会自动更新为新名称。

注意:如果 MySQL 脚本工具与 SQL 脚本工具不同,请评论它

提前谢谢了.....

0 投票
1 回答
166 浏览

oracle - 寻求 %RowType 的解决方法不适用于 oracle 不可见列

寻找不包括 oracle 表不可见列的 %RowType 的解决方法。我想要不可见的列,以免在转换期间影响遗留代码,并且能够在新代码中使用 %RowType 或类似的东西来访问所有列。我尝试过的一件事是创建具有完整表结构的类型记录,但它似乎不允许 %Type 引用单个列,即

无法做到:

在查看了其他 Invisible column 问题后,我也在考虑定义一个包含所有列的视图,然后使用 View%Rowtype。做这个的最好方式是什么?谢谢乔

0 投票
0 回答
137 浏览

postgresql - 将一张 Postgres 表重构为多张表

假设我有一个包含以下列的表格:

id | address | city | state

现在假设我想从该表中获取数据并将其移动到 3 个新表中:

表 1(“地址”):

id | address | city_id

表 2(“城市”):

id | city | state_id

表 3(“状态”):

id | state

我已经看到了一些涉及数据修改 CTE 的答案,但它们不是很清楚,我无法理解我将如何做我上面描述的事情。

0 投票
1 回答
59 浏览

sql-server - 将数据库更改移植到 SQL Server Reporting Services 以避免破坏报告

当进行数据库更改(重命名或删除表和列名)时,我的商店会遇到我们在部署后做出反应的损坏报告。在使用数据库更改之前,没有固定的做法来修复报告以反映更改。

我将数据库设置为 VS 中的 SQL Server 数据库项目,并将它们提交给 GIT。报告服务文件(.rdl文件)也在 GIT 中。到处google,看看是否可以连接数据库项目无济于事。

每当在数据库项目中更改数据库对象(例如重命名列)时,我都在寻找一种有效的方法来修复对 SQL Server Reporting Services 项目中重命名列的引用。