这些是我的表格,我创建了一个tbl_relation
,其中data_id
从tbl_data
和tag_id
从tbl_tags
。 data_id
可以有多少个tag_ids
。以一对多关系设计数据库
例如在以下情况下: 约翰与食物,苹果,橙子有关。 Linus与食物,马铃薯有关。
这是在速度和存储方面做的正确方法吗?因为我的tbl_tags
和tbl_data
可以有至少1百万个条目,并且tbl_data中的name
可以与至少5个tag_name
相关联。
tbl_tags
+----+--------+
| id | name |
+----+--------+
| 1 | food |
+----+--------+
| 2 | apple |
+----+--------+
| 3 | orange |
+----+--------+
| 4 | potato |
+----+--------+
| 5 | fruit |
+----+--------+
tbl_data
+----+--------+
| id | name |
+----+--------+
| 1 | John |
+----+--------+
| 2 | Linus |
+----+--------+
| 3 | Bill |
+----+--------+
| 4 | Steve |
+----+--------+
| 5 | Dennis |
+----+--------+
tbl_relation
+---------+--------+
| data_id | tag_id |
+---------+--------+
| 1 | 1 |
+---------+--------+
| 1 | 2 |
+---------+--------+
| 1 | 3 |
+---------+--------+
| 2 | 1 |
+---------+--------+
| 2 | 4 |
+---------+--------+
这看起来是一种存储两种类型数据及其之间关系的规范方法。您的挑战在于创建正确的索引,以便可以高效地完成联接。 –
+是的,这确实是最好的方法 – Milney
A 1:许多关系最好用一个表中的额外列来完成,而不是通过一个额外的表。 –