标签: database-design

我应该使用什么?一个字符串或 15 个整数字段?

我正在开发一个学生跟踪程序,我需要在其中存储 15 个考试分数。

我可以将标记存储为字符串,并在需要时将它们拆分,用于执行算术运算等目的。但是,我需要尽可能多的性能。

哪个更好?单个字符串字段,还是 15 个单独的 int 字段?

performance database-design datatypes query-performance

9
推荐指数
3
解决办法
629
查看次数

设计分解需求预测的简单模式

我正在做一个简单的数据库设计任务作为培训练习,我必须为以下情况提出一个基本的模式设计:

我有一个产品的父子层次结构(例如,原材料 > 在制品 > 最终产品)。

  • 订单被放置在每个级别。
  • 在接下来的 6 个月内,订单数量应在每周的桶中可见。
  • 可以对每个产品级别进行需求预测。
  • 未来 6 个月内任何一周的需求预测都可以在今天完成。
  • 对未来 6 个月的每周桶进行需求预测。

需求预测通常在层次结构的较高级别(原材料或在制品级别)完成,它必须分解到较低级别(最终产品)。

有两种方法可以将需求预测从较高级别分解到较低级别:

  1. 用户指定最终产品的百分比分布。比如说,有 1000 个正在进行的工作的预测......并且用户说我想要 40% 的最终产品 1 和 60% 的最终产品 2 在桶 10 中......然后从现在开始的第 10 周(周日到周六),预测值最终产品 1 为 400,最终产品 2 为 600。
  2. 用户说,只需根据桶5中最终产品的订单进行分解,最终产品1和2的桶5中的订单分别为200和800,那么EP1的预测值为((200/1000)* 100)%对于 EP2,将是“正在进行的工作”预测的 ((800/1000) * 100)%。

未来 6 个月的每周预测应可见,理想的格式应为:

product name | bucket number | week start date | week end date | forecast value | created_on
Run Code Online (Sandbox Code Playgroud)

PRODUCT_HIERARCHY表可能如下所示:

id  |   name                |   parent_id
__________________________________________
1   |   raw material        | …
Run Code Online (Sandbox Code Playgroud)

schema oracle database-design oracle-11g

9
推荐指数
1
解决办法
873
查看次数

PostgreSQL 如何对磁盘上的新记录进行物理排序(在主键上的集群之后)?

需要知道 PostgreSQL 如何在磁盘上订购记录。在这种情况下,我想利用文档中所述索引组合,据我所知,它使用位图来获取匹配的行并根据它们的物理位置返回它们。有问题的表已按其主键聚集在一起。

据我了解,在集群完成后,PostgreSQL 不会自动继续进行集群(尽管它确实记得它是根据某个索引进行集群的)。现在,由于这是主键,我想知道物理存储顺序是否会根据它(如果是真的,我想利用我们的优势来进行特定查询)。

综上所述,PostgreSQL 如何对其新记录进行排序,尤其是在聚类之后?

非常感谢!

postgresql index database-design clustered-index physical-design

9
推荐指数
1
解决办法
2292
查看次数

PK 作为 ROWGUIDCOL 还是使用单独的 rowguid 列?

这里正在进行一场冗长的辩论,所以我想听听其他意见。

我有许多带有 uniqueidentifier 聚集 PK 的表。这是否是一个好主意超出了这里的范围(并且不会很快改变)。

现在,必须合并发布数据库,并且 DEV 提倡使用单独的 rowguid 列,而不是将现有的 PK 标记为 ROWGUIDCOL。

基本上,他们说应用程序永远不应该将仅由复制使用的东西带入其域(这对他们来说只是“DBA 的东西”)。

从性能的角度来看,我认为没有理由添加一个新列来做一些我可以用现有列做的事情。而且,既然只是“DBA 的东西”,为什么不让DBA 选择呢?

我有点理解 DEV 的观点,但我仍然不同意。

想法?

编辑:我只想补充一点,我在这场辩论中是少数,质疑我立场的开发者是我尊重和信任的人。这就是我求助于征求意见的原因。
我也可能遗漏了一些东西,并且可能误解了他们的观点。

database-design sql-server merge-replication

9
推荐指数
3
解决办法
3462
查看次数

查找具有相同子行集的父行

假设我有这样的结构:

食谱表

RecipeID
Name
Description
Run Code Online (Sandbox Code Playgroud)

配方成分表

RecipeID
IngredientID
Quantity
UOM
Run Code Online (Sandbox Code Playgroud)

关键RecipeIngredients(RecipeID, IngredientID)

有哪些查找重复食谱的好方法?重复配方被定义为具有完全相同的一组成分和每种成分的数量。

我想过使用FOR XML PATH将成分组合到一个列中。我还没有完全探索这个,但如果我确保成分/UOM/数量按相同的顺序排序并且有一个合适的分隔符,它应该可以工作。有更好的方法吗?

有 48K 食谱和 200K 成分行。

sql-server-2008 database-design sql-server relational-division

9
推荐指数
2
解决办法
3861
查看次数

有效地存储不规则/重复间隔(想想日历/事件)

我正在开发一项服务,该服务依赖于用户能够接收他们自己选择的消息。这些消息在发送进行处理之前需要存储在某处。

现在我将它们存储在 postgres 数据库中,但我觉得它不能很好地扩展。

目前的布局是:

ID - MESSAGE - DATE - TIME
Run Code Online (Sandbox Code Playgroud)

DATE 和 TIME 字段保存应该发送消息进行处理的时间和日期。这不能很好地扩展,好像需要在每个月的第一个星期一发送一条消息,它会占用 12 倍的空间。

问题是我似乎无法找到另一种方式来表示何时应该发送消息进行处理?理想情况下,我希望能够在一行中表示每个日期。

我们也在讨论使用 Redis,但很快就决定不使用,因为我们需要 webfrontend 的数据库。

任何人都知道如何优化消息存储?如何表示何时应该发送消息进行处理?

我也愿意就如何解决这个问题提出任何其他建议。

postgresql database-design time

9
推荐指数
1
解决办法
2万
查看次数

用于识别数据库的 PowerShell 脚本

我有足够的 PowerShell 技能来开始工作,但没有使用 SQL 服务器。有人可以指出我如何使用 PowerShell 获取有关远程 SQL 服务器的信息以识别其上运行的数据库的正确方向。

谢谢你的帮助。

编辑 - 使用 SMO 代码

我试图将这段代码放在一起,但得到错误:找不到类型 [Microsoft.SqlServer.Management.Smo.Server] 确保加载了包含此类型的程序集

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
$sqlServer = New-Object("Microsoft.SqlServer.Management.Smo.Server") "MSQLULTDBS04"
foreach($sqlDatabase in $sqlServer.databases) {$sqlDatabase.name}
Run Code Online (Sandbox Code Playgroud)

database-design sql-server powershell

9
推荐指数
1
解决办法
3万
查看次数

不知道如何将可变实体转化为关系表

介绍和相关信息:

下面的例子说明了我面临的问题:

动物有一个种族,可以是可以是SiamesePersian可以是德国牧羊犬拉布拉多猎犬

Animal 是一个强大的实体,而其种族是一个属性,可以具有两个提供的值之一( cat 或 dog )。 这两个值都很复杂(我在这里只添加了狗/猫的类型来说明问题,但也可以有猫/狗的名字和一堆其他东西)。

问题:

我不知道如何为此示例创建关系表。

我解决问题的努力:

我曾尝试使用陈的符号绘制 ER 图,这代表了问题,但作为初学者,我不知道我是否做得对。这是我得到的:

在此处输入图片说明

如果我画错了,我深表歉意,如果是这样,请纠正我。我不希望简单地获得“免费解决方案”,而且还希望学习如何处理这个问题,以便我将来可以自己解决。

我唯一想到的是创建两张单独的桌子,一张给猫,一张给狗。此外,Animal表中的race属性将只存储catdog值。像这样的东西:

Animal< # Animal_ID, race, other attributes >
Cat < # Cat_ID, $ Animal_ID, breed >
Dog < # Dog_ID, $ Animal_ID, breed >
Run Code Online (Sandbox Code Playgroud)

我真的对我的解决方案有一种不好的感觉,我担心它是错误的,因此下面的问题。

问题:

  • 如何将我的示例转换为 ER 图?
  • 如何将该 ER 图转换为关系表?

如果需要更多信息,请发表评论,我会尽快更新我的帖子。也可以随意添加适当的标签,因为我在这里很新。

谢谢你。

database-design subtypes

9
推荐指数
1
解决办法
1679
查看次数

什么是“折叠”和“旋转”表?

此类问题的回答和讨论讨论了折叠表与透视表。

例如。

纸质演示文稿和有声电子演示文稿之间的唯一区别在于,后者的折叠桌结构更方便,而前者的枢轴桌结构...

我在谷歌上找不到关于这些术语的含义的任何信息(谷歌给出了关于蛋白质结构的结果)。

有人可以用例子解释这些术语的含义吗?

database-design terminology

8
推荐指数
1
解决办法
798
查看次数

重新设计大量传感器数据的存储

我的任务是实施/重新设计一个解决方案,该解决方案将存储来自传感器阵列的天气数据。该阵列将由大约 40 个塔组成,每个塔有大约 10 个传感器,每个传感器将在不确定的时间(年)内以 10 秒的间隔对大气条件进行采样。此任务的一些应用程序和要求如下:

  • 管理和检索塔/传感器配置以了解数据分析。
  • 用于气象观测的传感器或时间间隔的数据可视化。
  • 为客户提供可靠且持久的数据资源/数据集,以比较模型和传感器的性能(可能需要一些后处理才能以所需的格式交付?)。

注意:当前的解决方案(作为概念验证实施,有 5 个塔)将数据存储为平面文件(每小时一个文件)。

我原本不确定这是否会构成未来的大数据问题,所以我研究了关系数据库和 NoSQL 数据库的几个解决方案,但我觉得我需要更多的指导,因为我不是数据管理专家。

我认为的解决方案之一是将数据存储在由塔、传感器和时间戳索引的关系数据库中,并按日期对表进行分区。

另一种基于未来扩展的方法是将其存储在文档类型的 NoSQL 数据库(如 MongoDB)中,并模仿当前解决方案的结构。

这些有什么好的方法吗?如果没有,什么是更好/推荐的解决方案?另外,是否有必要重新设计当前的解决方案?有人告诉我,使用平面文件的理由是他们认为关系数据库会占用太多开销。如果是这种情况,有没有办法避免这种情况?

nosql database-design scalability

8
推荐指数
1
解决办法
1631
查看次数