数据库设计
我需要创建一个数据库来存储模拟结果。有哪些资源可以帮助我进行此设计?
编辑:对于那些想要更多细节的人...
我们与军队使用的离散事件模拟一起工作。因此,重要的模拟事件是何时发射武器,何时发生杀戮以及武器未能杀死目标。其他重要事件是何时检测到目标或者何时不再跟踪目标。我们保留相当详细的日志文件,然后我们将其挖掘以计算平均值和其他统计数据。我主要关心的是存储在数据库中的统计信息。
我要包括的另一件事是案件ID。我们使用字母数字案例ID字符串标识不同的案例,该字符串对应于系统和重要输入参数的特定组合。例如,假设传感器可以根据模式在3个不同范围内检测目标,则案例ID中将有一个字符对应于每个检测范围级别,分别标记为0、1或者2. 对于给定的案例,案例ID字符将在9之后转换为字母。该案例ID绝对是数据库中的重要键。一旦存储了数据,我们需要检索某些数字以制作比较不同情况的图表。我们目前在Excel中制作图表,但是最近我在添加更多MATLAB。
至于数据库技术,我想我将在Access中进行表设计以制作原型,然后在MS SQL Server中实现。我打算使用Ruby来创建带有数据表和图形的HTML报告。
解决方案
有一个名为" Stack Overflow"的网站,其中有很多聪明人可以提供帮助。 ;-)
提供有关我们要存储的内容的更多详细信息,我相信我们会获得很多有用的答案。
提供以下内容,我们将获得有用的答案
- 数据库类型(MsSQL,MySQL等)
- 我们与此搭配使用的其他任何语言(C#,PHP)
- 我们要存储的数据
- 我们打算如何处理数据(这可能会影响如何最好地存储和查询数据),此步骤是非常可选的
可以帮助做的一件事是拥有一个实体关系图。这将设计希望使用的不同表以及它们之间的相互关系。如果仿真不需要使用多个表,那么这可能会满足需求。
我们使用的一种便宜的解决方案(不是免费的)是Happy Fish。即使对于具有一百多个表的稍微复杂的应用程序,它也提供了一种可视化数据的好方法。该工具将自动生成架构DDL,以为环境创建必要的表,索引,外键约束(包括对Oracle,MySQL,Microsoft SQL Server等的支持)。
有很多其他工具可以解决这个问题。我们可以从Wikipedia中找到一系列免费工具。
如果我们使用的是关系数据库(提示:可能是),那么首先要了解的是如何规范化数据(即正确地构造表)。
良好的起点:这篇Wikipedia文章。
模拟什么?
David C. Hay所著的《数据模型模式:思想惯例》一书针对许多业务类型设计了设计方法。也许我们可以从那里的模型中得到启发?
通常,我们会写下用例-谁将使用它以及它们将要做什么。
有时,我们写下将要在数据库中存储的内容。实体,它们的属性以及实体所做的不同操作。
一旦有了一些基本的背景,我们通常会绘制实体图以及它们之间的关系。
考虑到所有这些,我们尝试寻找具有一定经验的人来帮助我们将图片映射到可用技术上,并为下一步提供一些建议。
我建议我们在计划使用的数据库中建立原型。从长远来看,这种类型的数据不适合访问。由于Access Sql与SQL Server t-sql的网络非常不同,并且Access数据类型与SQL Server数据类型不同(并且向导在转换时做出的选择很差),因此使用Access原型将不会为我们带来任何好处,并且可能会产生更多工作来重新创建事物已经解决了。
就DBMS而言:使用SQL Server Express,然后根据需要移动到SQL Server。请勿为此使用Access。
如果要使用Ruby,请考虑使用ActiveRecord(Rails的核心组件,但并不专门与它绑定)来构建数据库。这样,我们就可以使用迁移来发展模式,这是管理事物的好方法。默认情况下,数据库使用SQLite实现,如果我们不介意丢失Access的图形方面的话,它是一个不错的小程序包(可能是世界上使用最多的DB软件,鲜为人知)。升级到SQL Server应该相当轻松(我已经做到了没有大的伤痕)。
如果我们走这条路线,并计划从数据中通过Ruby输出HTML,那为什么不花大量精力把整个东西构建成基于Rails的网站呢?我们避免重造的车轮数量可能是值得的。
(免责声明:我是一个出生于世的Rails程序员,具有基于Windows的DB应用程序开发的悠久历史。对于任何不经意的传播,我深表歉意。)