我需要设计2个或更多表。 1. SubParts表 2. MainParts表。
单个MainPart可以有多个子部件。我正在考虑做像
这样的事情SubPart表: 身份证和姓名
MainPart表格: 身份证和姓名
SubPart_MainPart关系表: MainPart_ID SubPart_Ids(数组或逗号分隔)
有没有办法将多个subpart_id放在关系表的单列中? 或者我应该将MainPart_D和SUbPart_ID用作关系id中的组合主键吗?
第二种方法会增加关系表中的大量记录。 当我尝试迭代逗号分隔列(SubPart_Ids)时,第一种方法将增加循环代码。
你还有其他方法吗?
感谢您的帮助
答案 0 :(得分:0)
拥有子部件ID列表将违反1NF,并且几乎在任何情况下都非常不鼓励。如果您正在使用任何类型的DBMS,那么在交集表中包含更多行不是问题。
要考虑的另一件事是为什么你有一个单独的子部件表。做这种事情的传统方式(所谓的“物料清单”)是有一个表用于零件/组件,一个表用于表示“这些是构成该东西的东西”。换句话说:
ASSEMBLY
- Assembly ID (PK)
- Assembly Name
COMPOSITION
- Contained In Assembly ID (PK, FK)
- Contains Assembly ID (PK, FK)
编辑:请注意,真实的物料清单会在COMPOSITION表中包含数量和计量单位(数量)的字段。
答案 1 :(得分:0)
数据库设计的Fisrt规则,不要将任何内容存储在数组或逗号分隔列表中。您想要一个具有mainpart id和子部分id的连接表以及每个子部分的一条记录。如果正确编制索引,查询会更容易,也可能更快。
答案 2 :(得分:0)
您可能只需要两张桌子:
MainPartTable
*ID
Name
SubPartTable
*MainPartTable_ID
*SubPartTable_ID
Name
答案 3 :(得分:0)
SubPart是否有一个或多个mainParts?
如果只有一个MainPart,那么您只需要SubPart和MainPart表;其中包含SubPart表中的MainPart ID。
如果有多个MainParts,则需要一个SubPart_MainPart表。这不应该是逗号分隔列表。每一行应该是MainPart和SubPart之间的一个链接。