mysql 在规范化的数据库结构中,冗余数据是一种可接受的折衷吗?

jhdbpxl9  于 2023-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(89)

在SQL中,我正在考虑以下问题。
我有一个A_id列表和一个B_id列表。

  • 唯一A_id的数量~ 1.000s
  • 唯一B_id的数量~ 1.000.000s

这个想法是,对于每个A_id,我都有一个B_id列表,在这个列表中可能有许多B_id(多对多)。
我可以简单地将它们存储为

| 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+)
我明白这两种方法的缺点,但什么是更好的权衡?

wydwbb8l

wydwbb8l1#

规范化是要遵循的路线
1.对于现代DBMS来说,这并不是一个特别大的行数
1.由于您将对表进行适当的索引,因此您将只访问表中任何查询实际使用的行,而不是进行全表扫描(除非您的查询需要全表扫描)

相关问题