首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对CD与流派的关联进行建模?

如何对CD与流派的关联进行建模?
EN

Stack Overflow用户
提问于 2013-03-26 05:36:23
回答 3查看 225关注 0票数 1

我正在为一个销售音乐CD的网站创建一个数据库设计,但我碰壁了,因为我无法弄清楚CD和它的流派之间的关系是一对多还是多对多

每张CD可以有多个流派。例如,“音乐部的Dubstep赞美诗”可以有像Dubstep,Dance和Electro这样的体裁。

我想得越多,每一种流派也可以与许多CD联系起来。

目前我拥有数据库的方式是:

代码语言:javascript
运行
复制
cd_table
   PK ID
   FK Genre
   Description
   ...

genre_table
   PK ID
   Genre

如果它是多对多的,那么我的想法是正确的,我需要一个连接表,例如:

代码语言:javascript
运行
复制
cd_genre
   CD_ID
   Genre_ID

然后让它们都充当主键?如何将cd_genre链接到cd_table?或者我只是删除cd_table中的FK,然后在查询CD时执行联接?

EN

回答 3

Stack Overflow用户

发布于 2013-03-26 05:38:14

你是对的- CD和流派之间的关系是多对多的,这正是你提供的理由。

是的,像您所描述的交叉引用/连接表就是您所需要的。

有趣的是,根据其他约束,您可能也希望能够将流派放在其他地方。例如,歌曲:像Weird Al这样的艺术家可能会在他的一张专辑中放入几种不同类型的歌曲,而专辑本身并不一定有任何单一的“主要”类型(但通常有一些“主题”)。

票数 0
EN

Stack Overflow用户

发布于 2013-03-26 05:38:24

我想你已经回答了你自己的问题。CD和类型是多对多,您可以使用带有两个外键的两列表来实现,通常称为“连接表”。通常没有必要认为该表有一个主键,但合理地说,这两列是一个复合主键。

票数 0
EN

Stack Overflow用户

发布于 2013-03-26 05:50:46

要确定重数,请从不同的关系开始提出相同的问题:

  1. 一张CD可以属于多个流派吗?
  2. 一张流派可以包含多张CD?

当然,这可能是错误的数据库模型。相反,宋代<->流派和宋代<->CD是更高的规范化形式。它是更高的NF,因为CD <->流派可以由CD <->歌曲<->流派组成,但是CD<->流派不能回答关于CD上的歌曲的相同问题(除非一张CD最多只能是一个流派)。

另一方面,人们可能只关心CD而不关心歌曲。在这种情况下,对歌曲建模不相关甚至有害的过量数据。同样,完美的分类可能会使实际的分类过于复杂-要注意信息粒度和对问题域的使用之间的权衡。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15625245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档