Postgresql 是否可以仅使用主键引用在列中插入值?
我有一个“users”表,其中包含以下列:Postgresql 是否可以仅使用主键引用在列中插入值?,postgresql,Postgresql,我有一个“users”表,其中包含以下列: user_id(PK), user_firstname, user_lastname event_id(PK), user_id(FK), user_firstname, user_lastname....(and more columns). 还有一张桌子“房间”,上面有列: user_id(PK), user_firstname, user_lastname event_id(PK), user_id(FK), user_firstname,
user_id(PK), user_firstname, user_lastname
event_id(PK), user_id(FK), user_firstname, user_lastname....(and more columns).
还有一张桌子“房间”,上面有列:
user_id(PK), user_firstname, user_lastname
event_id(PK), user_id(FK), user_firstname, user_lastname....(and more columns).
我想知道是否可以只知道user\u id
列就自动填写user\u firstname
和user\u lastname
与之类似,user\u firstname
的默认值类似:“选择users.user\u firstname where users.user\u id=user\u id”
我不知道是否足够清楚……正如您所见,我在数据库中的知识非常有限。user\u firstname和user\u lastname列不属于您的房间表。user_id列引用users表,这就是您所需要的。 要选择数据,可以使用JOIN语句,如
SELECT R.event_id, R.user_id, U.user_firstname, U.user_lastname
FROM room AS R
JOIN users AS U ON R.user_uid = U.user_id
user_firstname和user_lastname列不属于房间表。user_id列引用users表,这就是您所需要的。 要选择数据,可以使用JOIN语句,如
SELECT R.event_id, R.user_id, U.user_firstname, U.user_lastname
FROM room AS R
JOIN users AS U ON R.user_uid = U.user_id
您想要实现的目标可以通过
JOIN
s来实现。它们将避免那些冗余的user\u firstname
和user\u lastname
列。因此,在查询房间表时,您只需从两个表中提取,就可以将用户的额外列
放入结果集中:
SELECT * FROM room AS r INNER JOIN users AS u ON r.user_id = u.user_id;
我们在这里做的事情被称为规范化。另一个需要注意的重要事项是外键约束及其级联,在您的例子中是
room.user\u id引用user.user\u id
。如果您想删除用户,则用户上的删除
最有可能会级联到房间
,而不是将其标记为已删除。您想要实现的功能可以通过加入
s来实现。它们将避免那些冗余的user\u firstname
和user\u lastname
列。因此,在查询房间表时,您只需从两个表中提取,就可以将用户的额外列
放入结果集中:
SELECT * FROM room AS r INNER JOIN users AS u ON r.user_id = u.user_id;
我们在这里做的事情被称为规范化。另一个需要注意的重要事项是外键约束及其级联,在您的例子中是room.user\u id引用user.user\u id
。如果您想删除用户,则用户上的删除
很可能应级联到房间
,而不是将其标记为已删除。这里的答案与问题无关。事件表中不需要user\u lastname
和user\u lastname
列。user\u id
是整个用户表中该行的代理。当您需要访问user\u firstname
时,您可以将公共列上的两个表连接起来。这里的答案与问题是横向的。事件表中不需要user\u lastname
和user\u lastname
列。user\u id
是整个用户表中该行的代理。当您需要访问user\u firstname
时,可以在公共列上连接两个表。如果您有FKuser\u id
,为什么要将user\u firstname
和user\u firstname
存储在room
中?因为我想输出一个类似以下的查询:SELECT*FROM room;然后使用PHP将其编码为JSON,这样我就可以访问用户名和用户名为什么要将user\u firstname
和user\u lastname
存储在room
中,如果你有FKuser\u id
,因为我想输出一个查询,比如:SELECT*FROM room;并使用PHP将其编码为JSON,这样我就可以访问用户_firstname和用户_lastnamehm。。谢谢大家的回答!我想我现在明白了:嗯,我明白了。。谢谢大家的回答!我想我现在明白了:D