2012-06-19 45 views
1

像许多数据库人类可读的别名,我的人们提供了串行生成的数值主键的表,因为名称不是唯一的:PostgreSQL的 - 对数值主键

ID NAME STUFF 
--------------- 
101 Bob  20 
102 Bob  30 

等几个表参考这些ID的外键:

ORDER PERSON NOTE 
------------------- 
1  02  Blah 
2  01  Foo 

(不能使用名称,而不是ID为FK因为FKS必须具有唯一约束引用列)。由于我的数据输入是手动的,所以使用GUI(现在是Mac上的pgAdmin或LibreOffice),在订单表上工作时,更容易看到一个人的姓名,而不是数字ID。我已经想到了这个看似简单的问题的一些解决方案,并没有一个看起来不错:

A)视图 - 不可编辑。我知道how to make views editable with triggers,但AFAIK没有GUI编辑器可以使用它来允许可编辑的视图。

B)为Order表添加一个名称列,然后使用触发器使所有内容保持同步 - 这是诱人的,但随后我有重复的数据,并且在我的表结构发展时头疼。如果订单名称列是使用触发器强制执行的只读模式,则会更好一些,但仍然有很多缺陷。

C)我真正需要的是一些切换GUI编辑器在显示个人ID和相应名称之间切换的方式,无论他们出现在哪个任意表格中,都不会影响底层数据的完整性。

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

+0

再一)你怎么知道** **无GUI编辑器做的是(顺便说一句:究竟是什么“GUI编辑r“为你呢?) –

+0

感谢您的回复......我不知道这个事实,AFAIK =据我所知。通过GUI编辑器,我的意思是使用图形前端完成数据输入,例如pgAdmin中的网格编辑器或LibreOffice中的表格控件(我更喜欢简单的网格/电子表格样式编辑器)。而不是通过命令行添加/更新数据。 – followthemusic

回答

1

您可以通过Microsoft Access和postgres ODBC驱动程序实现此功能(至少在Windows上)。步骤基于2010年,但这个过程是在2003年和2007年

  1. 相同的链接你的表到一个新的Access数据库并设置它们之间的关系。
  2. 用设计视图中的外键打开表格并切换到底部的设计选项卡。
  3. 选择组合框而不是文本框。
  4. 点击查询源,然后点击右边的三个点。
  5. 添加表的主键查询设计
  6. 添加列你想看到什么,然后与ID
  7. 关闭编辑
  8. 更改绑定列2列,因为你的第二列是关键

在这里你可以找到根据您的问题,一个小例子:(不含虽然ODBC)https://www.sugarsync.com/pf/D949685_2198453_6801553