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

Mysql 使用外键跟踪新关系中的所有权,mysql,sql,database-design,foreign-keys,Mysql,Sql,Database Design,Foreign Keys,我想跟踪哪些用户拥有哪些歌曲。 用户表: +--------+----+ |username|name| +--------+----+ |sam1 |Sam | +--------+----+ |bil9 |Bil | +--------+----+ |tomj |Tom | +--------+----+ 其逻辑是建立一种新的关系来追踪谁拥有哪首歌 +-------------+--------+ |user_username|track_id| +-----------

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

+--------+----+
|username|name|
+--------+----+
|sam1    |Sam |
+--------+----+
|bil9    |Bil |
+--------+----+
|tomj    |Tom |
+--------+----+
其逻辑是建立一种新的关系来追踪谁拥有哪首歌

+-------------+--------+
|user_username|track_id|
+-------------+--------+
|sam1         |1       |
+-------------+--------+
|bil9         |5       |
+-------------+--------+
|bil9         |9       |
+-------------+--------+
|tomj         |2       |
+-------------+--------+
轨迹id是轨迹表的外键:

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

这是正确的,还是有更合乎逻辑的方法

您所称的逻辑更像是一个查找表

需要考虑的事项:

1个用户可以有多个曲目?如果是这样,请确保轨迹id不是唯一的。 您所做的很好,因为如果您更改了一个曲目或用户名,映射将保持不变。
我建议的一件事是有一个用户id,以便用户id映射到跟踪id-让数字映射到数字总是好的,因为查询通常更快,然后您可以随意更改文本值,它们仍然映射

如果您的目的是建立多对多关系模型,那么是的-使用连接表是正确的方法。根据表的布局,轨迹id是唯一的不是更有意义?bil9拥有9和5。每个ID都可以映射到特定的轨迹。此外,这个问题意味着id本身就是tracks表的主键。