[英]About the design of the database table
描述如下:
在我的项目中,设计表遇到了混乱。
现在我有四种不同的内容类型,每个字段都不完全相同。
如 ,
表A,B和C具有“类型”字段,而表D没有,并且由于“类型”字段,某些字段的值不同。
例如,在表A中,如果“类型= 0”,则“长度”字段可以为0.00,否则“长度”字段不能为0.00。 但是,在表D中,长度字段必须存在,并且比表A,B和C具有更多的“工作表”字段。
在这种情况下,我将表A,B,C,D设计成不同的表,即A,B,C,D由表名区分。 太too肿了吗?
并且我需要将另一个表(表E)与表A,B,C和D的数据相关联。根据我以前的做法,我需要在关联的表中添加一个字段,用于区分不同的表,以便它可以找到正确的表内容。 (非常不便)
如果我将表A,B,C,D设计成同一张表,然后通过一个字段来区分A,B,C,D这四个不同的内容,这将导致某些字段变得多余。
例如,表D必须具有“工作表”字段,而表A,B和C则不是必需的。 设计到同一张表,每个表的A,B,C字段将更多为一个“工作表”字段。
好处也很明显,表E可以直接与同一表的“ id”字段关联。
设计成四个表,按表名区分
还是设计成一张表,将更多的区别操作,在代码中完成
更新..
我的四个表(ABCD),只有表D有一个“工作表”字段,少了一个“类型”字段,其他字段与表A / B / C的字段相同,设计成一个相同的表是没有问题的。
但是,我有一个操作可以对表中的数据进行分页,可以在其中查询ABC类型的数据,但是D类型的数据需要一个“ group by”查询(例如,D类型的数据“ The sum”为“工作表”字段计算“”,其数据与“宽度”字段和“长度”字段相同。
因此,如果我在一张桌子上设计一张桌子,该如何达到上述要求。
感谢您的回答!
根据您的需要,但是可以将主表用于公共字段,将子表用于其他信息。
主表:
TableABCDE: { ABCDE_id (Pk), field1, fieldN}
查尔兹表
DataA: { A_ID (PK), ABCDE_ID (FK), field_A1, fieldAN}
DataB: { B_ID (PK), ABCDE_ID (FK), field_B1, fieldBN}
DataC: { C_ID (PK), ABCDE_ID (FK), field_C1, fieldCN}
DataD: { D_ID (PK), ABCDE_ID (FK), field_D1, fieldDN}
DataE: { E_ID (PK), ABCDE_ID (FK), field_E1, fieldEN}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.