gpt4 book ai didi

model-view-controller - 挣扎于模型关系

转载 作者:行者123 更新时间:2023-12-02 00:42:03 25 4
gpt4 key购买 nike

我很难设计与我项目中的几个模型的关系。

模型有:乐队、音乐家、乐器

乐队有多个音乐家

音乐家有多个乐队和多种乐器

这一切都非常简单,但我还需要跟踪音乐家为特定乐队使用的乐器。所以在某种意义上,我猜,乐队通过音乐家拥有多种乐器。

在表中,我打算将 instrument_id 添加到 bands_musicians 链接表,但我需要一个音乐家能够为一个乐队拥有多种乐器,所以我认为它需要放在 musicians_instruments 表中。

与这些模型建立关系的最佳方式是什么?

感谢您的宝贵时间!

最佳答案

音乐家与乐队和乐器都具有一对多的关系。因此,创建您的音乐家表并将与音乐家本身相关的所有信息添加到该表中。

创建一个 instruments 表来保存有关乐器的信息,并对乐队执行相同的操作。这将处理您所有的个人元素。

然后创建类似“band_assignments”的表,其中仅包含乐队的 ID 和音乐家的 ID,并将两者链接在一起。创建一个“instrument_assignment”表来做同样的事情。

现在,当您查询音乐家时,您可以将所有这些表连接在一起以获取您需要的数据,或者有选择地仅连接乐器、乐队,或者按“连接日期”排序并限制以获取他们上次使用的乐队加入或他们学习的最后一种乐器。

基本上 5 个表格应该可以涵盖所有内容。

musicians  (musician_id, first_name, last_name)
bands (band_id, name)
instruments (instrument_id, name)
band_instument_assignments (musician_id, band_id, instrument_id, date_played)

正如您在上面编辑后的版本中看到的那样,“band_instrument_assignments”表中会有多行 - 每个用户在每个乐队中演奏的每种乐器都有一行。您将需要使用一些 GROUP BY 和 LIMIT 子句来获取您想要的数据,但它应该适合您。

关于model-view-controller - 挣扎于模型关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2270505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com