0

我需要用 Java 构建一个系统,以保存机器故障记录。但这对我来说变得有点复杂。

要求是这样的。

输入故障记录时,用户应该能够选择一台机器(比如从组合框中)。选择机器后,下方将出现一个组合框以显示机器的各个部分。一旦选择了一个部分,如果所选部分有 subsections,另一个组合将显示这些子部分......这就是这样,直到我们来到预期的最终感兴趣部分。然后只有用户可以输入一些关于故障的描述..

我希望这部分很清楚。

然后还有另一个要求,可搜索性。也与上面类似。记录应该能够在上述所有字段下进行搜索。这意味着,如果一台机器有多个级别的子部分,我们应该能够在所有这些级别下进行搜索......

我已经建立了一个系统来处理具有两个级别的子部分的机器。但这不是工作。所以我重新开始(几次:D)..

我正在使用SQLExpress 2008. 但我对此没有多少经验。因为我不知道如何使用 SQLExpress 来处理嵌套/树结构数据。我曾想过使用 XML。是的,这有点难看,因为除了数据库之外,我还必须维护一个包含嵌套数据的 XML 文件文件夹。我以为我已经做到了..直到我记得搜索要求.. :(

最后,我放弃了。突然想起了论坛!有人可以帮我弄这个吗。这是分配给我的一个培训项目。我喜欢编程,但我没有那么多高级知识/经验。这种动态性质和处理嵌套数据的要求让我感到困惑。

任何帮助是极大的赞赏。谢谢!

4

1 回答 1

3

数据库设计并不完全直观或容易。通过反复试验学习可能需要很长时间。在尝试通过实验学习之前,最好学习一些基本概念并学习如何将它们应用于多个案例。全栈已经为您指明了正确的方向。这是一个摘要:

有几种方法可以在 SQL 表中存储树结构数据。有一种邻接列表技术,使用单独的列,将其称为“ParentId”,它引用同一表的不同行中的 Id 列。您可以使用它来创建任何所需深度的树,但递归搜索它并不容易。您通常必须使用 SQL 语言的特定于产品的扩展或在您的编程语言中进行树搜索。后一种选择几乎浪费了一个好的 DBMS 提供给您的所有功能。还有另一种方法,称为嵌套集模型。当您需要将新叶子放入树中或将叶子变成树枝时,更新会有些困难。但是查询真的很好用。

这两种方法都假定您了解外键引用主键的概念,并且您可以在多对一或多对多情况下使用关系模型。创建一个同样适合搜索所有属性的数据库是一个重要的设计问题。在掌握基本知识之前不要解决它。

如果你做对了,数据库设计并不是非常复杂。看一百个表比看十万行代码容易。但它比编程更抽象。很难学会用数据声明而不是面向行动的命令来表达需求。

于 2012-09-25T11:16:31.260 回答