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

问题描述 投票:0回答:1
  • 我是 postgres 和数据库的新手。我正在尝试创建一个密码 经理。我有一个名为“密码”的表,用于存储密码,还有另一个表“人员”,用于存储其唯一 ID 和其他详细信息。

  • 现在密码表的问题是 每个用户都会有不同数量的密码 店铺。所以我不确定我希望这个表有多少列。
  • 我想要做的是为每个用户设置一行并添加所有用户 该行本身的详细信息,每个用户可以有不同的号码 密码。但是我不知道该怎么做。
  • SO

    我想,由于每个用户都有一个唯一的id,(说user1有id 2)所以我可以添加不同的行 相同的 id 存储详细信息。并且会简单地运行SELECT * FROM password where id=2。所以它将列出他们存储的所有密码 这有效

    
    

  • 但是我想知道一种更有效的方法来做到这一点。所以 请帮帮我
  • 如果您不明白

    请转到此链接我在那里描述得更好。

sql postgresql database-design
1个回答
0
投票

您将 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 关键字来缩小范围,就像在示例查询和文档末尾中所做的那样。

尽管这超出了问题的范围:避免以纯文本形式存储密码。始终对它们进行哈希处理。

希望这有帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.