我有一个名为USERS
的表,其中user_id
为主键,user_name
。
我有另一张表USERS_ACT
,其中包含user_act_id
主键user_act_user_id
和另外两列。
我需要user_act_user_id
成为USERS
中的外键吗?我怎样才能做到这一点?
这是我在SQL的第一天,所以请善意解释我的问题是不是错了。
答案 0 :(得分:1)
如果没有参考完整性,你可以让它发挥作用,周围没有“魔力”。
使用来自USERS的pk值填充你的user_act_user_id,你就拥有了它。
您可能想要添加约束,但这可能不是您所要求的, http://msdn.microsoft.com/en-us/library/ms175464.aspx
简而言之,他们将桌子之间的钥匙保持良好状态。
答案 1 :(得分:1)
让我们假设您不是数据库管理员,而您只想获得所有活跃用户'名字;))
select users.user_name
from users
join users_act on users.user_id = users_act.user_act_user_id
答案 2 :(得分:1)
如果MySql甚至支持外键,则取决于您的数据库类型。例如,您可以使用InnoDB格式的外键,但不能使用MyIsam格式。 使用MySql时,我个人更喜欢使用MyIsam,并在编程时进行大部分完整性检查。 通常,您只需在表USERS中添加user_act_user_id,但不要将其标记为任何键。之后你可以简单地使用JOIN,但是没有给出参考完整性,所以如果你想要f.e,必须在编程网站上编写你自己的“触发器”。自动删除属于另一个表中用户的数据。否则,您必须使用约束或触发器,但这在使用SQL时可能并不那么容易。
答案 3 :(得分:1)
假设您正在使用InnoDB(这是唯一支持外键的引擎):
ALTER TABLE users_act
ADD CONSTRAINT fk_users_act_users
FOREIGN KEY (user_act_user_id)
REFERENCES users (user_id);