与许多数据库一样,我有一个包含序列生成的数字主键的人员表,因为名称不是唯一的:
ID NAME STUFF
---------------
101 Bob 20
102 Bob 30
其他几个表将这些ID作为外键引用:
ORDER PERSON NOTE
-------------------
1 02 Blah
2 01 Foo
(不能使用name而不是ID作为FK,因为FK必须引用具有唯一约束的列)。由于我的数据输入是手动的,使用GUI(现在是Mac上的pgAdmin或LibreOffice),在处理订单表时,更容易看到一个人的姓名而不是数字ID。我已经想到了这个看似简单的问题的一些解决方案,似乎没有一个好看:
A)观点 - 不可编辑。我知道how to make views editable with triggers但是AFAIK没有GUI编辑器可以使用它来允许可编辑的视图。
B)在Order表中添加一个名称列,然后使用触发器使所有内容保持同步 - 这很诱人,但后来我有重复的数据,并且在我的表结构发展时很头疼。如果订单名称列以只读方式强制执行触发器,但仍有很多陷阱,那就好一点了。
C)我真正想要的是在显示人员ID和相应名称之间切换GUI编辑器的方式,无论它们出现在哪个任意表中,都不会影响基础数据的完整性。
希望这是明确的;如果需要可以提供更多细节。谢谢你的帮助!
答案 0 :(得分:1)
您可以使用Microsoft Access和postgres ODBC驱动程序实现此目的(至少在Windows上)。步骤基于2010年,但在2003年和2007年的过程是相同的。
在这里你可以找到一个基于你的问题的小例子:(虽然没有ODBC)https://www.sugarsync.com/pf/D949685_2198453_6801553