Postgresql - 数字主键的人类可读别名

时间:2012-06-19 17:31:58

标签: postgresql

与许多数据库一样,我有一个包含序列生成的数字主键的人员表,因为名称不是唯一的:

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编辑器的方式,无论它们出现在哪个任意表中,都不会影响基础数据的完整性。

希望这是明确的;如果需要可以提供更多细节。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用Microsoft Access和postgres ODBC驱动程序实现此目的(至少在Windows上)。步骤基于2010年,但在2003年和2007年的过程是相同的。

  1. 将您的表链接到新的Access数据库并设置它们之间的关系。
  2. 在设计视图中使用外键打开表格,然后切换到底部的设计选项卡。
  3. 选择组合框而不是文本框。
  4. 点击查询源,然后点击右侧的三个点。
  5. 将包含主键的表添加到查询设计器
  6. 在列中添加您要查看的内容,然后添加ID为
  7. 的列
  8. 关闭编辑器
  9. 将“绑定”列更改为2,因为您的第二列是键
  10. 在这里你可以找到一个基于你的问题的小例子:(虽然没有ODBC)https://www.sugarsync.com/pf/D949685_2198453_6801553