像许多数据库一样,我有一张带有序列生成数字主键的人员表,因为名称不是唯一的:
ID NAME STUFF
---------------
101 Bob 20
102 Bob 30
其他几个表将这些 ID 作为外键引用:
ORDER PERSON NOTE
-------------------
1 02 Blah
2 01 Foo
(不能使用名称而不是 ID 作为 FK,因为 FK 必须引用具有唯一约束的列)。由于我的数据输入是手动的,因此使用 GUI(现在是 Mac 上的 pgAdmin 或 LibreOffice)在处理订单表时更容易看到人名而不是数字 ID。对于这个看似简单的问题,我已经想到了许多解决方案,但似乎没有一个很好:
A) 视图 - 不可编辑。我知道如何使用触发器使视图可编辑,但 AFAIK 没有 GUI 编辑器可以使用它来允许可编辑视图。
B) 向 Order 表中添加一个名称列,然后使用触发器使所有内容保持同步 - 这很诱人,但是我有重复的数据,并且当我的表结构演变时很头疼。如果 Order name 列使用触发器强制为只读,那就更好了,但仍然有很多陷阱。
C)我真正想要的是某种方式在显示人员 ID 和相应名称之间切换 GUI 编辑器,无论它们出现在什么任意表中,而不会影响底层数据的完整性。
希望这很清楚;如果需要,可以提供更多详细信息。谢谢你的帮助!