提问人:Bjarke Kingo 提问时间:6/12/2023 最后编辑:Bjarke Kingo 更新时间:6/13/2023 访问量:47
在规范化的数据库结构中,冗余数据是否是可接受的权衡?
Is redundant data an acceptable trade-off in a normalized database structure?
问:
在SQL中,我正在考虑以下问题。
我有一个A_ids列表和一个B_ids列表。
- 唯一A_ids数 ~ 1.000s
- 唯一B_ids数 ~ 1.000.000s
这个想法是,我为每个A_id都有一个B_ids列表,这个列表中可能有很多B_ids(多对多)。
我可以简单地将它们存储为以下格式
| a_id | b_ids |
| 1 | '1,2,3,4,5' |
| 2 | '1,2,4,5' |
| 3 | '1' |
| 4 | '1,2' |
| 5 | '3,4' |
| 6 | '2,3' |
...
然而,我读到了规范化,即简单地做:
| a_id | b_id |
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 2 | 1 |
...
是更好的做法,但我担心拥有大量行(即 1.000.000.000+)的影响
我理解两者的缺点,但更好的权衡是什么?
答:
1赞
NickW
6/13/2023
#1
正常化是要遵循的路线
- 对于现代 DBMS,这并不是一个特别大的行数
- 由于要适当地为表编制索引,因此只能访问任何查询实际使用的表中的行,而不是执行全表扫描(除非查询需要全表扫描)
评论