这不是作业,而是由上级分配的新任务。为内部最终用户创建系统,根据每条线路的容量自动建议不同的装配线。用户需要每月维护每个线路容量,并且每条线路上都有自己的产品组,并且在每个装配线上都具有独特的优势。当销售订单到来时,该系统将根据下面的生产线计划维护,根据优先级设置对每个装配线进行自动分配。
例如,产品组XYZ下的产品A将在L1和L2运行
示例数据
期间| Line_Number | Product_Subgp | Line_Capacity | Prority
201009 | L1 | XYZ | 2000年| 1
201009 | L1 | ABC | 2000年| 2
201009 | L2 | XYZ | 2000年| 2
201009 | L2 | ZZZ | 2000年| 1
行标题的表格结构: LinHdr
Line_Hdr_ID | INT(自动增加)
Line_Number | VarChar(10)[主键]
期间| VarChar(6)[主键]
容量|数字(16)
Special_Capacity |数字(16)
Line_Description | VarChar(20)
行标题的表格结构: LinDtl
Line_Dtl_ID | INT(自动增加)
Line_Hdr_ID | Int [主键]
Product_Group | VarChar(10)[主键]
Prority |数字(2)
问题:
表LinHdr:Line_Number + Period是主键。由于这两个字段将充当唯一性和数据的搜索键。我是否正确将两者都设为主键?
表LinHdr:需要包含Lin_Hdr_ID作为主键吗? (由SQL自动增量的LinHID对用户是不可见的。)
表LinDtl:Line_Hdr_ID + Product_Group将设置为主键,以强制实现唯一性。 这个Line_Dtl_ID是否正确? 这个领域是否必要? 如果Line_Hdr_ID + Product_Group已经提供唯一性,可以排除Line_Dtl_ID吗?
或者,最好将上面的2个表合并到1个表中,这些表没有创建关系数据库?
希望可以从这里获得专业知识的建议。
提前致谢。
答案 0 :(得分:1)
我同意乔的说法(正在打字,他打败了我)。
我要补充的一点是 如果“行描述”列是行本身唯一的,而不是每个行/句点组合,那么您可能希望有一个单独的“行”表,其中包含LineNum和LineDescription列。这样,当您输入新的期间信息时,您不必每个月都插入该描述值。如果描述每个月都在变化(或者它可能仅在个别时期内发生变化),那么请保留它,就像它拥有它一样。
答案 1 :(得分:0)
1.1。 Line Hdr Id设置为autinc - 使其成为PK。你可以搜索没有PK的字段。如果它们是唯一的,那么在它们上做索引 - 需要让它们成为PK,然后必须将它用作FK - 长键!加上我个人不喜欢把日期记入PKs
请参阅上面的#1 - 并且,您回答了自己的问题!
如果你想在InDtl中使用concat / composite PK,那么将它设为LinHdr_id + Lin Dtl Id - 这是建立识别关系的“正确”方式。
不要合并表格,否则会违反第3范式。
COnsider正在读书:Richard Barker的实体关系建模。