我最近刚开始在我的新项目中使用SQL数据库,我有一个关于一对多关系的问题。
一个简化的例子:假设我们有一个
User
可以定义
Persons
(例如,让我们想想模拟人生游戏)。每个用户只是创建自己的人,一个人不能在用户之间共享。
所以我们有一个列表
Users
,每个用户都有一个列表
人员
。我现在在SQL中这样表示(很抱歉,如果我没有使用任何官方的SQL表示语法…):
表用户
id: uuid (primary key)
桌上人员:
owner: uuid (foreign key from `Users`)
number: integer (auto-increment, starting from 0)
primary key: composite of owner and number
name: text
age: integer
gender: text
etc.
所以现在如果我想得到所有
人员
属于用户的,我可以简单地查询
人员
表,以获取所有者与用户对应的所有元素。好啊
现在我的问题是:这不是完全没有效率吗?我的意思是,如果我们有100万
用户
创造了1000万
人员
,SQL数据库必须查询1000万
人员
找到可能属于当前用户的5个人?
将人员列表添加到
用户
表,这样“查找”可以更快地进行?例如,我应该更新
用户
桌子到这个?
表用户
id: uuid (primary key)
persons: list of uuid (foreign key from Persons)
桌上人员:
id: uuid (primary key)
etc.
我在所有的建议中都看到,第一种方法更好,更像“SQL”,但我想第二种方法一定要快几个数量级?
谢谢你们!