繁体   English   中英

关于数据库表的设计

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM