如何在 Table 中为用户设置不同数量的列?

How to have different number of Column for users in a Table?

关于使用第二个 table 存储各种登录名(网站、website_username、密码)的想法,您的想法是正确的。 但是,您应该在这里使用关系数据库中的主键和外键的概念。对于您的示例,这意味着:

您将个人 table 中的“id”列定义为主键,将密码 table 中的“pid”列定义为引用个人 [=] 中的 id 的外键26=]。如果我查对了,你可以使用 REFERENCES 关键字。例如,参见 https://www.postgresqltutorial.com/postgresql-foreign-key/。您可以(也应该)删除“密码”中的用户名字段 table,因为这是多余的信息。

然后您可以查询您的用户并通过主 ID 和外部 pid 上的 INNER JOIN 加入这两个 tables,请参阅 https://www.postgresqltutorial.com/postgresql-inner-join/ 您的查询可能看起来像这样(为了更好的可读性,我在这里将您的“密码”table 重命名为“登录”:

SELECT person.id, username, website, website_username, password FROM person INNER JOIN login ON login.pid = person.id;

然后每个用户的所有登录信息都会返回给您。当然,您可以像在示例查询和文档末尾那样使用 WHERE 关键字来缩小范围。

尽管这超出了问题的范围:避免以纯文本形式存储密码。如果可能,始终加密它们。

希望这对您有所帮助:)