像许多数据库人类可读的别名,我的人们提供了串行生成的数值主键的表,因为名称不是唯一的: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和相应名称之间切换的方式,无论他们出现在哪个任意表格中,都不会影响底层数据的完整性。
希望这是明确的;如果需要可以提供更多细节。谢谢你的帮助!
再一)你怎么知道** **无GUI编辑器做的是(顺便说一句:究竟是什么“GUI编辑r“为你呢?) –
感谢您的回复......我不知道这个事实,AFAIK =据我所知。通过GUI编辑器,我的意思是使用图形前端完成数据输入,例如pgAdmin中的网格编辑器或LibreOffice中的表格控件(我更喜欢简单的网格/电子表格样式编辑器)。而不是通过命令行添加/更新数据。 – followthemusic