【问题标题】:Set-up a Child Table that always has the same number of rows as the Parent table?设置一个始终与父表具有相同行数的子表?
【发布时间】:2019-01-08 01:50:58
【问题描述】:

我想知道是否有任何方法可以设置子表和父表之间的关系,其中子表始终具有与父表相同的行数。

示例:父表充当厨房中使用的成分的“主列表”或“字典”,在表中它将有多个列来存储有关成分的信息,例如as - 唯一 ID、成分名称、供应商/品牌、计量单位等。

子表表示存储成分的不同位置,(不同的分支) - 子表可能只有 2 列作为成分的唯一 ID 和数量。子表需要包含与父表相同的行数。如果在父表中创建了一个新条目,那么子表也应该具有 Quantity = 0 的新条目。

替代解决方案:如果这是不可能的,为了实现这一点,我目前想到的是我如何处理表单,如果新条目进入父表它还具有将新条目插入现有子表的代码,尽管这意味着每次都有新位置(新子表) 我还可以创建一种表单来检查父表和特定子表是否具有相同的行数。

感谢您的宝贵时间和意见。

【问题讨论】:

  • 为什么不直接将列添加到第一个表中?
  • 您是一对一关系,您不想将其存储在两个不同的表中。为什么不直接将列数量添加到父表?
  • @GMB 我不想将数量列存储在父表中,因为我有多个位置,因此多个子表只有一个父表。而且我想确切地知道在特定位置有多少成分
  • 您说:子表需要包含与父表相同的行数。
  • @GMB - 是的,所以如果父表有 20 种不同的成分,那么即使数量为 0,每个子表也应该有 20 种不同的成分。(我知道这真的很奇怪,因为存储所有 0 值 - 但这是一个示例:/)

标签: html mysql


【解决方案1】:

您计划为每个将存储成分数量的位置创建一个子表。这将产生多个表与成分表具有 1-1 关系的情况。此规范化不适用于您的用例。

考虑以下替代设计:

  • ingredients存储配料主数据
  • locations 列出了不同的位置
  • ingredients_locations存储每个位置的每种产品的数量:它有一个引用成分ID的外键,还有一个指向位置ID的外键

【讨论】:

  • 我应该为成分位置表添加一个索引号(auto_increment)号吗?像这样的索引号有什么价值吗?
猜你喜欢
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多