【发布时间】:2015-12-23 12:26:09
【问题描述】:
如果我有一个位置数据表:
餐桌位置
PK:Location_ID ,国家,州,城市
1 RSA EC GRH
2 USA NY NY city
3 RSA WC Cape Town
表用户配置文件
PK:User ,name ,surname, FK: Location_ID
1 John, Cp 1
2 Luck, dv 3
3 pete, hrt 2
我的困惑,如果外键仅用于参照完整性,这是否意味着:表用户配置文件:列 Location_ID 不包含数据......
出于性能原因,我想避免加入。因此我可以说:
用户在注册时提供国家、州和城市:因此在 Locations 表中查找 Location_ID。将 Locations 表中的 Location_ID 插入到 User Profiles 表中到 User Profile 表中:Location_ID。
然后,在查找具有相同位置的所有用户时,我只需要查询配置文件表 Location_ID 即可找到这些用户......那么我应该将表用户配置文件:Location_ID 改为不是外键的列。 .
场景是匹配一个国家的具有相同兴趣的用户,
它位于另一个名为 Interest 的表中
PK:用户、兴趣
1 golf
2 cricket
3 swimming
1 Rugby
2 golf
因此使用代码,我会说用户资料表中 location_Id:1 的用户,使用用户查询兴趣表的兴趣。因此返回用户和兴趣以使用代码进行进一步处理。
我正在使用的一本教科书似乎使用外键作为上面设置的位置数据
PK = 主键,FK = 外键。 谢谢。
【问题讨论】:
-
你有什么问题?
-
FK 用于参照完整性,但数据仍存储在 Location ID 列中。此外,使用 1 次调用数据库的连接比使用多次数据库调用更好。