如何在 Table 中为用户设置不同数量的列?
How to have different number of Column for users in a Table?
我是 postgres 和数据库的新手。我正在尝试创建一个 密码
经理。我有一个名为 password 的 table 用于存储密码,还有一个 table 'person' 用于存储其唯一 ID 和其他详细信息。
现在密码 table 的问题是
每个用户都会有不同数量的密码
店铺。所以我不确定我希望这个 table 有多少列。
我想做的是为每个用户设置一行并添加所有
该行本身的详细信息,每个用户可以有不同的号码
的密码。但是我不知道该怎么做。
SO 我在想,因为每个用户都有一个唯一的 ID,,(说用户 1 的 ID 为 2 ) 所以我可以添加不同的行
相同的 ID 存储详细信息。并且只会 运行 SELECT * FROM password where id=2
。所以它将列出他们存储的所有密码并且
这有效
但是我想知道更有效的方法来做到这一点。所以
请帮帮我
如果你不明白请转到this link我在那里描述得更好
关于使用第二个 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 关键字来缩小范围。
尽管这超出了问题的范围:避免以纯文本形式存储密码。如果可能,始终加密它们。
希望这对您有所帮助:)
我是 postgres 和数据库的新手。我正在尝试创建一个 密码 经理。我有一个名为 password 的 table 用于存储密码,还有一个 table 'person' 用于存储其唯一 ID 和其他详细信息。
现在密码 table 的问题是 每个用户都会有不同数量的密码 店铺。所以我不确定我希望这个 table 有多少列。
我想做的是为每个用户设置一行并添加所有 该行本身的详细信息,每个用户可以有不同的号码 的密码。但是我不知道该怎么做。
SO 我在想,因为每个用户都有一个唯一的 ID,,(说用户 1 的 ID 为 2 ) 所以我可以添加不同的行 相同的 ID 存储详细信息。并且只会 运行
SELECT * FROM password where id=2
。所以它将列出他们存储的所有密码并且 这有效但是我想知道更有效的方法来做到这一点。所以 请帮帮我
如果你不明白请转到this link我在那里描述得更好
关于使用第二个 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 关键字来缩小范围。
尽管这超出了问题的范围:避免以纯文本形式存储密码。如果可能,始终加密它们。
希望这对您有所帮助:)