我使用MySQL / InnoDB,并使用外键来保存跨表的关系。在下面的场景(下面描述)中,“管理器”与“记录标签”相关联,“艺术家”也与“记录标签”相关联。创建“专辑”时,它与“艺术家”和“经理”相关联,但艺术家和管理人员都需要与同一recordLabel相关联。如何保证与当前表设置的关系,或者是否需要重新设计表?

发布于 2013-09-20 12:02:04
为了执行我认为您所要求的内容(在制作专辑时,艺术家和经理应该在同一家公司工作),同时允许艺术家和经理在他们的职业生涯中四处走动,您可以尝试将艺术家<-> manager <->标签关系考虑为专辑链接的一个实体:
Artist ArtistManager
============= ==============
ArtistID (PK) <--------- ArtistID (FK) Album
.----- ManagerID (FK) ============
| .-- LabelID (FK) AlbumID (PK)
Manager | | AMCID (PK) <--- AMCID (FK)
============== | |
ManagerID (PK) <--' |
|
|
Label |
============ |
LabelID (PK) <-------'尽管我怀疑这些要求可能存在缺陷:可能有多位艺术家在一张专辑上进行协作,在这种情况下,可能有一个经理,或者他们可能在某个特定项目下工作,如果他们当时可能并不都为同一张唱片工作(跨标签项目并非闻所未闻)。
https://dba.stackexchange.com/questions/48435
复制相似问题