使用外键跟踪新关系中的所有权

时间:2014-01-19 13:22:42

标签: mysql sql database-design foreign-keys

我想跟踪用户拥有哪些歌曲。 用户表:

+--------+----+
|username|name|
+--------+----+
|sam1    |Sam |
+--------+----+
|bil9    |Bil |
+--------+----+
|tomj    |Tom |
+--------+----+

逻辑是创建一个新的关系来跟踪谁拥有什么歌......

+-------------+--------+
|user_username|track_id|
+-------------+--------+
|sam1         |1       |
+-------------+--------+
|bil9         |5       |
+-------------+--------+
|bil9         |9       |
+-------------+--------+
|tomj         |2       |
+-------------+--------+

Track id是track表的外键:

+--+------+
|id|name  |
+--+------+
|0 |track1|
+--+------+
|1 |track2|
+--+------+

这是正确的,还是有更合理的方法呢?

1 个答案:

答案 0 :(得分:0)

你所谓的“逻辑”更像是一个查找表。

需要考虑的事项:

  • 1个用户可以有多个曲目?如果是这样,请确保track_id不是唯一的。
  • 您所做的很好,因为如果更改曲目或用户名,映射将保持不变。

我建议使用一个用户ID,以便user_id映射到track_id - 将数字映射到数字总是好的,因为它通常可以更快地进行查询,然后您可以根据需要更改文本值。他们仍然映射。