我需要用Java构建一个系统,以保持机器故障记录。但这对我来说有点复杂。
要求是这样的。
输入明细记录时,用户应该能够选择一台机器(例如从组合框中选择)。选择机器后,将在下方显示一个组合框以显示机器的各个部分。一旦选择了一个部分,如果所选部分有子部分,则另一个组合将显示这些子部分......这就是这样,直到我们达到预期的最终部分。然后只有用户可以输入关于故障的一些描述..
我希望这部分是明确的。
然后还有另一项要求,即可搜索性。它也与上面类似。记录应该能够在所有上述字段下搜索。这意味着,如果一台机器有多个级别的子部分,我们应该能够在所有这些级别下进行搜索......
我已经建立了一个系统来处理具有两级子部分的机器。但那不是在做这个工作。所以我已经开始了(好几次:D)..
我正在使用SQLExpress 2008
。但我对此并不熟悉。因为我不知道如何使用SQLExpress来处理嵌套/树结构化数据。我曾想过使用XML。是的,它有点难看,因为除了数据库,我还要维护一个包含嵌套数据的XML文件夹。我以为我已经做到了......直到我记得要求搜索要求.. :(
最后,我放弃了。突然想起了论坛!有人可以帮我弄这个吗。这是一个分配给我的培训项目。我喜欢编程,但我没有那么多先进的知识/经验。这种动态特性和处理嵌套数据的要求使我感到困惑。
非常感谢任何帮助。谢谢!
答案 0 :(得分:3)
数据库设计并非完全直观或简单。通过反复试验学习可能需要很长时间。在尝试通过实验学习之前,最好学习一些基本概念并学习如何将它们应用于几个案例。完整堆栈已经指向正确的方向。以下是摘要:
有几种方法可以在SQL表中存储树结构化数据。有一个邻接列表技术,使用一个单独的列,称之为“ParentId”,它引用同一个表的另一行中的Id列。您可以使用它来创建任何所需深度的树,但递归搜索并不容易。您通常必须使用SQL语言的产品特定扩展或使用您的编程语言进行树搜索。后一种选择几乎浪费了一个好的DBMS掌握在你手中的所有力量。还有另一种方法,称为嵌套集模型。当您需要在树中放置新叶子或将叶子变成分支时,这有点难以更新。但查询工作得很好。
这两种方法都预先假定您理解外键引用主键的概念,并且您可以在多对一或多对多情况下使用关系模型。创建同样适合搜索所有属性的数据库是一个非常重要的设计问题。在你掌握了基本内容之前,不要解决它。
数据库设计,当你做得对,并不是非常复杂。理解一百个表比十万行代码更容易。但它比编程更抽象。很难学会用面向行动的命令的数据声明来表达需求。