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表的主键。