数据库——数据库中的表是否必须包含所有全局实例,或者它们可以特定于某个 ID

Databases - Do tables in a database have to contain all global instances or can they be specific to a certain ID

我正在尝试为 Facebook 用户建立数据库模型。对于我的用户 table 我有 {account_name, account_id, ..., password} 作为变量。我正在尝试为该用户的朋友创建一个 table,例如朋友列表或联系人 table,但我想知道联系人 table 是否必须有所有的列表可能的友谊(即 {user_id, friend_id, friends_since,...} )或者是否有可能联系 table 特定于某个 user_id(所以{contact_id、friends_since、no_of_mutual_contacts,等等})。

这可能只是我大脑中面向对象的部分开始发挥作用,但例如我们使用的是 Cinema 数据库。有 5 家电影院,每家有 5 个屏幕,CINEMA 是 table,SCREEN 是 table。 SCREEN table 是否有 25 个数据实例,或者是否有某种方式使 SCREEN table 仅包含对应于特定 CINEMA 的 5 个屏幕。

这又回到了我原来的问题,联系人 table 必须是包含所有友谊的全局 table,还是联系人 table 仅 return user_id 的特定联系人。

出于某种原因,当我查看数据库的关系图表时,我看到连接类似于一个有点像结构的对象,其中链接仅表示成员,如 user.Contacts 或 user.Events。

通常情况下,关系数据库中的 table 会记录给定类型的所有事实,例如user <user_id> is friends with user <friend_id> since <friends_since>.

如果需要,您可以为给定用户创建视图,或者只在查询中指定 user_id,以获得适用于特定用户的行子集。

如果您想获取特定 friend_id 的所有行,创建特定于特定用户的物理 table 会造成困难。