Database 在数据库设计中防止循环引用

Database 在数据库设计中防止循环引用,database,database-design,circular-reference,Database,Database Design,Circular Reference,我有这些桌子: --位置(ID) --音乐会(ID,地点ID\U FK) --演出时间(ID、协奏曲) --座椅锁(ID,ShowtimesID\u FK) --座椅(识别号,座椅锁识别号) 现在我有一个名为SeatValue的实体。这个实体是一些席位的值,比如Golden、Silver等。对于这个实体,每个记录都必须有一个指定的Showtime。 我认为这是一个解决方案: SeatValue(ID,ShowtimesID\u FK) 座位更改为: --座椅(ID、座椅锁ID、座椅价值ID) 但

我有这些桌子:

--位置(ID)

--音乐会(ID,地点ID\U FK)

--演出时间(ID、协奏曲)

--座椅锁(ID,ShowtimesID\u FK)

--座椅(识别号,座椅锁识别号)

现在我有一个名为SeatValue的实体。这个实体是一些席位的值,比如Golden、Silver等。对于这个实体,每个记录都必须有一个指定的Showtime。 我认为这是一个解决方案:

SeatValue(ID,ShowtimesID\u FK)

座位更改为:

--座椅(ID、座椅锁ID、座椅价值ID)

但我认为这是一个简单的参考,不是吗?
如何更改它?

在这种情况下,我将提出以下建议:

  • 位置(ID、元数据)
  • 音乐会(ID、地点ID\U FK、元数据)
  • 演出时间(ID、协奏曲编号、元数据)
  • 座椅锁(ID、位置、元数据)
  • 座椅(ID,座椅锁ID\U FK,元数据)
  • 座位定价(ID、座位【或如果按区块定价,则为座位锁定】、展示时间、元数据)
  • SeatSignment(ID、SeatPricing_FK、Seat_FK[如果座位定价是按区块进行的]、元数据)
      • 戏剧是存在的
      • 音乐会存在
      • 剧院被分成座席区
      • 座椅是座椅座的一部分
      • 音乐会的演出安排在剧院举行
      • 演出有座位出售


      为什么不将您的座位价值作为座位的零或一个参考?座位价值有一些记录,它必须比座位更高。它有名称和价格。谢谢您的回答。但是如果我有音乐会1的a座和音乐会2的a座,我如何将它们分离?好吧,不同的音乐会不会有不同的座,除非你在重新安排座位。这些街区与音乐会无关;只有当某人在某个特定的音乐会上屁股坐在那个街区的座位上时,他们才与音乐会有关。我认为您试图在层次结构中过早地将静态信息和动态信息联系起来。座椅锁的定义是什么?是SeatID推动的实际座位安排,还是可能因音乐会而异的定价层级的虚拟表示?这还不清楚。在后一种情况下,座椅锁将由音乐会或演出时间驱动。但是,你真的认为某一场音乐会的海运价值会随着演出时间的变化而变化吗?@JAGAnalyst,我的定义是基于实际位置;我认为OP试图将物理位置与定价属性结合起来,这确实需要规范化。座椅锁包含一些座位,并且不会随音乐会而改变。但每次音乐会或演出时间的座位价值都会发生变化。例如,在皇家艾伯特厅举行的阿黛尔音乐会,位置和座椅锁不会改变,但价格会因另一场音乐会而改变。