tl;dr在底部。
因此,我有一个应用程序,它的模式大致如下:
`budget`hasMany =>
`item1`
`item2`
...
`item10`现在,这10个项共享一组23字段(),这些字段在所有10个项中都匹配。至少其他20字段在7个或更多项中共享。这是这样的,回顾性地说,这是愚蠢的,但此刻它似乎是正确的。
因此,考虑到这一点,我想:为什么不创建9个表,创建一个包含来自所有项的所有字段的表,因为很多都是共享的。
我会得到什么?很多代码都会消失。很多桌子都会坏掉。检索预算及其所有项只需要一个单独表的联接,而不是10个联接。
我的怀疑来自这样一个事实:这个新的表大约有80列。所有的小列,主要存储整数,双或小变量。尽管如此,80栏给我的印象还是很大。另一个问题是,在未来,我不会有10张每张1kk记录的表,我会有1张10 1kk记录的大表。
因此,我的问题是:为了消除一些冗余、减少代码数量和增加检索和处理数据的能力,是否值得进行更改?
tl;博士,我应该将10个表合并成一个表,考虑到这10个表共享许多公共字段(但新表仍将有80个列),以便减少表的数量,减少应用程序中的代码量,并提高我检索数据的方式?
发布于 2017-07-18 13:43:09
据我所知,这可能不是很多,最理想的做法是将数据库分割成单个的部分(就像目前的情况一样)。调用它来规范数据库("database")。
它限制了数据库中可能发生的错误,并降低了通过更新等方式更改内容的风险,如果您想插入一个项而不是另一个项(如果您只有一个表,所有其他表都为null,并且您总是必须返回并获取信息等等,这将使insert语句更加困难)。
如果每次都要插入所有20个项,并且始终基于所有项执行查询(不对单数项进行高级计算),那么将所有内容放入一个表中可能是合理的。但是,如果您只想插入几个项,然后要进行更复杂的计算,我建议您通过某种Customer_Id或w/e将它们保持分离和链接。
发布于 2017-07-18 14:17:49
@yBrodsky,例如,您应该为家具创建一个存储家具名称、id和描述的表。和另一张表,它可以用家具标识来存储它的属性。
家具表将有列id,furniture_title,描述。
和其他表将具有id、furniture_id、attribute_key、attribute_value。
https://stackoverflow.com/questions/45168201
复制相似问题