我想知道在使用Dropbox数据存储区时,处理1对多表关系的最佳方法是什么。假设我有一个house
表,每个房子可以有很多people
。
[house]
- kitchen
- roof
- people (many)
人们有自己的属性:
[people]
- name
- gender
我可以想到两种可能的方法:
方法1:序列化人员并将其嵌入DBList
[house]
- kitchen: traditional
- roof: tile
- people: [Bob-male, Sally-female]
这需要在每次将数据从数据存储区中拉出时解析数据。
方法2:制作people
表,在house
[house]
- kitchen: traditional
- roof: tile
- people: [a3xy, t7e1]
[people]
- recordId: a3xy
- name:Bob
- gender:male
-----
- recordId: t7e1
- name: Sally
- gender:female
在查询房屋后,这需要使用人员记录ID进行额外查询以获取他们的数据。
这些是在Dropbox数据存储区API中实现表关系的唯一方法吗?
答案 0 :(得分:2)
这是建模关系的两种典型方式。特别是,这看起来像1:很多关系。还有1:1的关系(其中只包括记录中的其他数据是常见的),很多:1个关系(这只是1:多关系的反向),还有很多:许多关系,通常用“交汇表”(例如HouseToPerson)。
您的第一种方法看起来像非规范化方法,在NoSQL数据库中更常见,而您的第二种方法看起来像在关系数据库中流行的典型规范化数据库模式。
所有这些模式都适用于数据存储区。请记住,在数据存储区API中,所有“查询”都只是本地查找,因此执行“其他查询”并不重要。