首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql - 10 (非常)相似的表或1表

MySql - 10 (非常)相似的表或1表
EN

Stack Overflow用户
提问于 2017-07-18 13:28:19
回答 2查看 73关注 0票数 0

tl;dr在底部。

因此,我有一个应用程序,它的模式大致如下:

代码语言:javascript
复制
`budget`hasMany =>
   `item1`
   `item2`
    ...
   `item10`

现在,这10个项共享一组23字段(),这些字段在所有10个项中都匹配。至少其他20字段在7个或更多项中共享。这是这样的,回顾性地说,这是愚蠢的,但此刻它似乎是正确的。

因此,考虑到这一点,我想:为什么不创建9个表,创建一个包含来自所有项的所有字段的表,因为很多都是共享的。

我会得到什么?很多代码都会消失。很多桌子都会坏掉。检索预算及其所有项只需要一个单独表的联接,而不是10个联接。

我的怀疑来自这样一个事实:这个新的大约有80列。所有的小列,主要存储整数,双或小变量。尽管如此,80栏给我的印象还是很大。另一个问题是,在未来,我不会有10张每张1kk记录的表,我会有1张10 1kk记录的大表。

因此,我的问题是:为了消除一些冗余、减少代码数量和增加检索和处理数据的能力,是否值得进行更改?

tl;博士,我应该将10个表合并成一个表,考虑到这10个表共享许多公共字段(但新表仍将有80个列),以便减少表的数量,减少应用程序中的代码量,并提高我检索数据的方式?

EN

回答 2

Stack Overflow用户

发布于 2017-07-18 13:43:09

据我所知,这可能不是很多,最理想的做法是将数据库分割成单个的部分(就像目前的情况一样)。调用它来规范数据库("database")。

它限制了数据库中可能发生的错误,并降低了通过更新等方式更改内容的风险,如果您想插入一个项而不是另一个项(如果您只有一个表,所有其他表都为null,并且您总是必须返回并获取信息等等,这将使insert语句更加困难)。

如果每次都要插入所有20个项,并且始终基于所有项执行查询(不对单数项进行高级计算),那么将所有内容放入一个表中可能是合理的。但是,如果您只想插入几个项,然后要进行更复杂的计算,我建议您通过某种Customer_Id或w/e将它们保持分离和链接。

票数 0
EN

Stack Overflow用户

发布于 2017-07-18 14:17:49

@yBrodsky,例如,您应该为家具创建一个存储家具名称、id和描述的表。和另一张表,它可以用家具标识来存储它的属性。

家具表将有列id,furniture_title,描述。

和其他表将具有id、furniture_id、attribute_key、attribute_value。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45168201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档