SQL多个MANY_TO_MANY关系

时间:2014-05-07 03:28:10

标签: sql many-to-many

我有三个对象:城市,频道,流派。关系:城市有很多频道和类型,频道和类型可能在几个城市。频道有很多类型,但是类型可能有很多频道。

我设计了下一个数据库:

tblChannel:
  id,
  name

tblGenre:
  id,
  name

tblCity:
  id,
  name

// City and Channel MANY_MANY
tblCityChannel:
  id,
  cityId,
  channelId

// City and Genre MANY_MANY
tblCityGenre:
  id,
  cityId,
  genreId

// Channel and Genre MANY_MANY
tblChannelGenre:
  id,
  channelId,
  genreId

我不确定这是否正确,谁可以指明我的错误?

RESOLVE:

我接下来重新设计了我的数据库:

tblChannel:
  id,
  name

tblGenre:
  id,
  name

tblCity:
  id,
  name

tblCityChannelGenre:
  id,
  cityId, // NOT NULL
  channelId,
  genreId

该布局解决了下一个问题:

  1. 我可能会单独创建entites(频道可能没有类型,类型 可能没有渠道)
  2. 城市可能有频道列表, 这些不是由流派定义的,而是与流派相反的。

1 个答案:

答案 0 :(得分:0)

如果它是所有3个实体之间的真实m:m关系,那么你的模型是正确的。但在现实世界中,这是不可能的。很可能你有一个层次结构(如树),你只有2 m:m的关系,第三个是隐含的,或者你有3个表之间的关系所以你需要一个带有3个col键的表(不是3个表有2个col的表)键)。尝试更好地了解您的数据,并且您将看到正确的模型是什么。再次,它可能会很好......