问题标签 [denormalization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
704 浏览

php - 每个组获取多个 GROUP BY 结果,或使用单独的连接表

我正在开发一个拍卖网络应用程序。现在我有一个带有投标的表格,我想从这个表格中选择每次拍卖的最后 10 个投标。

现在我知道我可以通过以下方式获得最后的出价:

SELECT bids.id FROM bids WHERE * GROUP BY bids.id ORDER BY bids.created

现在我已经读到为 GROUP BY 结果设置一个数量并不是一件容易的事,实际上我没有找到简单的解决方案,如果有的话我想听听。

但是我想出了一些解决方案来解决这个问题,但我不确定我是否做得很好。

选择

第一件事是创建一个新表,命名为 bids_history。在此表中,我存储了最后一项的字符串。

例子:

我还必须存储名称和时间,因为我没有找到简单的方法来获取bid_id(20,25,40) 中使用的字符串,并且只在连接中使用它。这样我就可以加入拍卖ID,我有最新的结果。

现在,当有新的出价时,这些是步骤:

  • 在出价中插入出价 获取最后插入的 ID
  • 获取此拍卖产品的 bids_history 字符串
    • 爆炸字符串
    • 插入新值
    • 检查是否有超过 3 个
    • 内爆数组,然后再次插入字符串

在我看来,这一切都不是一个很好的解决方案。我真的不知道该走哪条路。请记住,这是一个有很多出价的网站,每个拍卖品最多可以出价 15.000 个。也许因为这个数量是 GROUPING 和 ORDERING 不是一个好方法。如果我错了,请纠正我。

拍卖结束后,我会清理出价表,删除所有出价,并将它们存储在单独的表中。

有人可以帮我解决这个问题!

如果你去过,谢谢阅读..

编辑

我使用的表是:

作为查询的结果,我想要什么:

所以这是每次拍卖的最新出价,按数字选择,3 或 10

0 投票
3 回答
2394 浏览

mysql - 我想将列表值存储为 MYSQL 列中的数组。最佳做法是什么?

我有一个包含常见注册字段的注册表单和两个标题为“服务”的多项选择列表。我想将表单数据存储到数据库中的表中。目前我只有一个表“registrations”,我也在考虑是否应该创建另一个名为“registration_services”的关系表并存储 regid 和 serviceid

我预计此表中至少有 10000 条记录 将多选列表值存储在同一表的一列中是否更好?

或者我应该创建另一个表并存储为父子关系吗?

最佳做法是什么?

请指教 谢谢新航

0 投票
3 回答
1499 浏览

sql - SystemSettings的表设计,最佳模型

有人建议移动一个充满设置的表格,其中每一列是设置名称(或类型),行是客户及其各自的设置。

身份证 | 管理员 | 图像路径
------------------
12 | 1 | \path\to\images
34 | 0 | \路径\到\图像

这样做的缺点是每次我们想要一个新的设置名称(或类型)时,我们都会更改表(通过 sql)并添加新的(列)设置名称/类型。然后更新行(以便每个客户现在都有该设置的值)。

新的桌子设计方案。建议有一个用于设置名称的列和另一个用于设置的列。
身份证 | 设置名称 |
设置值---------------- 12
| 管理员 | 1
12 | 图像路径 | \path\to\images
34 | 管理员 | 0
34 | 图像路径 | \路径\到\图像

他们提出的观点是,添加新设置就像对行的简单插入语句一样简单,无需添加列。

但是第二种设计感觉有些不对劲,它看起来很糟糕,但我无法提出任何反对它的论据。我错了吗?

0 投票
5 回答
132 浏览

c# - SQL Server 2008:我可以为此使用约束吗?

我有一个包含三个字段的表UserCityCountry,其中一个字段必须始终为非NULL。我可以为此使用 SQL 约束还是应该重新考虑我在做什么?

场景是我的数据库应该包含可以附加到用户、城市或国家的文档。因此,此表中的一行恰好包含一个用户、城市或国家/地区的文档。但是,人们也应该能够搜索所有文档,而不管它已“附加”到哪个实体。

我不使用三个不同的表的原因是我想避免JOIN在所有三个地方搜索文档时都使用三个表。我想我在这里尝试使用的那种非规范化会提高性能,但我不确定。

想法?

0 投票
3 回答
1617 浏览

mysql - 查看 MySQL 中的非规范化性能

我目前正在编写我真正的第一个 PHP 应用程序,我想知道如何正确地项目/设计/实施 MySQL 视图;

在我的特殊情况下,用户数据分布在多个表中(由于数据库规范化),我正在考虑使用视图将数据分组到一个大表中:

这样我可以轻松地使用来自 PHP 应用程序的视图数据,但我真的不知道这会对性能产生多大影响。

例如:

是过滤视图数据的正确方法还是应该在创建视图本身之前过滤?(我需要这个有一个用户列表和按角色过滤它们的功能)。

编辑

具体来说,我想要获得的是将三个表非规范化为一个。我的解决方案正确吗? 参见维基百科上的非规范化

0 投票
9 回答
253 浏览

sql - 请帮我为这个问题设计一个sql查询

替代文字

对于一个特定的名字,我想获取住在这个人居住的三个或更多城市的其他名字。

0 投票
4 回答
187 浏览

php - 特定 MYSQL 问题的反规范化替代方案?

我面临着一个非常具体的优化问题。

我目前有 4 个规范化的数据表。

每秒钟,可能有成千上万的用户会使用 AJAX 从这些表中获取最新信息。

问题是我可以相对容易地预测他们需要哪个数据子集......这 4 个规范化表中最近的 100 个左右的条目。

我一直在研究反规范化......但觉得也许有一个更简单的解决方案。

我在想我可以以某种方式每秒运行一个 sql 查询来压缩所需的信息,将其存储在一个临时缓存表中,然后让所有用户查询都从中提取。这将允许 4 个表的复杂连接只运行一次,然后用户只需要从缓存表中进行简单的查找。

我真的不知道这是否可行。对此或任何其他建议的评论将不胜感激。

谢谢!

0 投票
2 回答
545 浏览

database - 非规范化数据库

我正在查看Star Schema Benchmark,然后我在想是否可以对 SSB 中的所有表进行非规范化?

所以数据库大小会增加很多,但性能可能会增长。是对的吗?是否可以?

感谢并为我糟糕的英语感到抱歉。

0 投票
1 回答
375 浏览

sql - SQL Server 非规范化问题 - 将用户数据存储在 1、3 或 21 个表中?

我们网站的一部分要求向用户询问 20 个关于他们自己的多项选择题(“个人资料”)。网站的这一部分将被经常查看,并且偶尔会更新。该网站预计会产生大量流量,因此正在考虑尝试并为性能问题做准备。

我可以看到将其存储在数据库中的 3 种方法是:

  1. 为每个问题创建 1 个表,每个表都有 QuestionID 和 Answer,然后是 CustomerInfo 表来存储配置文件数据,外键映射到问题。

  2. Question、Question_Type 和 Answers 表。把所有东西都塞进这些结构里。我在这里特别关心的是更新配置文件所需的 20 个左右的插入。这是否会在高流量时对性能造成影响?

  3. 非规范化的单个表,每个问题一个字段,将答案代码硬编码在 HTML 和/或 C# 对象中。

我倾向于#2或#3。你认为最好的解决方案是什么?

0 投票
2 回答
1669 浏览

java - 映射非规范化休眠

我有一个包含质量列表的摘要类。质量包含字符串名称和 int 值。此数据存储在非规范化的数据库结构中,只有一个表,用于摘要和质量。

质量表:

id, somefileds, qualityname1, qualityvalue1, qualityname2, qualityvalue2, qualityname3, qualityvalue3

对于每个质量名称和值对,必须在摘要类中插入一个新的质量对象。

如何在休眠中映射它(xml休眠映射)?