还有另一种方法可以处理表格中的利基标志吗?
Is there another way to deal with niche flags in tables?
假设您有一个 table meal
,您已经在您的应用程序中使用了很多年。你一直都是用这个table来上菜的。但是现在您需要能够在(可选)制作之前制作膳食草稿。因此,您将新的布尔列 draft
添加到 meal
table;由于用户尚未确认他们想要制作此特定餐点,因此不会提供这些餐点。所以它们只需要在草稿对话框中可用,而不是在其他任何地方。
需要保留草稿,因为用户可能会关闭对话框并希望稍后返回预览。
实际的用餐服务仍然是您申请的backbone。所以现在您需要更新所有查询以检查此标志是否为假。这是很多工作,您必须非常小心,因为忘记一个查询可能会变成一个非常微妙的错误。
您或许可以复制 meal
table 创建并创建一个名为 draft_meal
的新 table,但这是您应用程序中的核心 table (与许多其他 table 相关)并且您必须定期更新 meal
以添加新列等内容。
还有其他方法可以解决这个问题吗?有没有办法处理“污染”整个应用程序的利基标志?
您可以在添加新列时将现有 table 的名称更改为类似 meal_master
的名称。然后创建一个像这样的视图:
CREATE OR REPLACE VIEW meal AS
SELECT col, col, ...
FROM meal_master
WHERE draft = 0
这种方法允许您在添加新功能时保持现有代码的运行。您可以在现有服务风险较小的情况下上线。
您仍然应该重构所有内容以使用新的 table;你不必一蹴而就。
确保 draft
的默认值为 0。
您了解到数据比使用它的代码的寿命更长。
假设您有一个 table meal
,您已经在您的应用程序中使用了很多年。你一直都是用这个table来上菜的。但是现在您需要能够在(可选)制作之前制作膳食草稿。因此,您将新的布尔列 draft
添加到 meal
table;由于用户尚未确认他们想要制作此特定餐点,因此不会提供这些餐点。所以它们只需要在草稿对话框中可用,而不是在其他任何地方。
需要保留草稿,因为用户可能会关闭对话框并希望稍后返回预览。
实际的用餐服务仍然是您申请的backbone。所以现在您需要更新所有查询以检查此标志是否为假。这是很多工作,您必须非常小心,因为忘记一个查询可能会变成一个非常微妙的错误。
您或许可以复制 meal
table 创建并创建一个名为 draft_meal
的新 table,但这是您应用程序中的核心 table (与许多其他 table 相关)并且您必须定期更新 meal
以添加新列等内容。
还有其他方法可以解决这个问题吗?有没有办法处理“污染”整个应用程序的利基标志?
您可以在添加新列时将现有 table 的名称更改为类似 meal_master
的名称。然后创建一个像这样的视图:
CREATE OR REPLACE VIEW meal AS
SELECT col, col, ...
FROM meal_master
WHERE draft = 0
这种方法允许您在添加新功能时保持现有代码的运行。您可以在现有服务风险较小的情况下上线。
您仍然应该重构所有内容以使用新的 table;你不必一蹴而就。
确保 draft
的默认值为 0。
您了解到数据比使用它的代码的寿命更长。