我是 postgres 和数据库的新手。我正在尝试创建一个密码 经理。我有一个名为“密码”的表,用于存储密码,还有另一个表“人员”,用于存储其唯一 ID 和其他详细信息。
我想,由于每个用户都有一个唯一的id,(说user1有id 2)所以我可以添加不同的行
相同的 id 存储详细信息。并且会简单地运行SELECT * FROM password where id=2
。所以它将列出他们存储的所有密码
这有效
您将 person 表中的“id”列定义为主键,将密码表中的“pid”列定义为引用 person 表中 id 的外键。如果我查对了,您可以使用 REFERENCES 关键字来实现这一点。例如,请参阅
https://www.postgresqltutorial.com/postgresql-foreign-key/。您还可以(并且应该)删除“密码”表中的用户名字段,因为这是多余的信息。 然后您可以查询您的用户,并通过主 id 和外部 pid 上的 INNER JOIN 连接这两个表,请参阅
https://www.postgresqltutorial.com/postgresql-inner-join/
然后,您的查询可能看起来像这样(为了更好的可读性,我将您的“密码”表重命名为“登录”:
SELECT person.id, username, website, website_username, password FROM person INNER JOIN login ON login.pid = person.id;
然后您将获得每个用户的所有登录信息。当然,您可以使用 WHERE 关键字来缩小范围,就像在示例查询和文档末尾中所做的那样。
尽管这超出了问题的范围:避免以纯文本形式存储密码。始终对它们进行哈希处理。
希望这有帮助:)