我的问题很简单: 我有一个列引用人员,在所有这些人中,只有一个人具有特定的身份。在PostgreSQL数据库中表示这个的最佳方法是什么?
我的第一个想法是创建一个布尔列,所有布尔都等于假,但是对于特定的人。这意味着我还需要检查整个列中只有一个是真的。但是,它似乎不是最佳的,因为它意味着每列多一位,并且由于可能存在相当多的行,因此会浪费数据。 第二种解决方案是创建第二个表来引用该人。但是,这意味着只用一行创建一个表......
您对如何解决此问题有任何其他想法吗? 谢谢!
答案 0 :(得分:0)
使用一个条目创建一个表,主表的外键对我来说似乎是合理的。当你只关心一个价值时必须保持一个地位似乎是浪费而且相对难以维持。
答案 1 :(得分:0)
PostgreSQL有一个inheritance系统,可以很好地解决这个问题。
CREATE TABLE people (...);
CREATE TABLE special_person ( ) INHERITS (people);
您可以select * from people
提取所有记录,同时仍然向special_person
添加独占列。