处理嵌套/树数据的Java数据库管理系统

标签 java sql database-design dynamic sql-server-express

<分区>

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

需求是这样的

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

我希望那部分是清楚的。

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

我已经构建了一个系统来处理具有两级子部分的机器。但这并没有起到作用。所以我重新开始(好几次 :D)..

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

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

非常感谢任何帮助。谢谢!

最佳答案

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

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

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

数据库设计,当你做得对的时候,并不是真的非常复杂。看懂一百张表比看懂十万行代码容易。但它比编程更抽象。学习根据数据声明而不是面向行动的命令来表达需求可能很困难。

关于处理嵌套/树数据的Java数据库管理系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12580923/

相关文章:

database-design - 电子商务网站是否应该使用混淆的订单 ID

java - 如何使用 JPA 从 PostgreSQL 读取 bytea 图像数据?

java - SQL 语句 - NullPointerException

mysql - 用户订阅的数据库设计

mysql - 管理文件/项目关系的最佳方式是什么?

一个 SQL 文件中的 SQL 多个函数

Java从Object[]中获取特定元素

java - Collections.sort 创建重复项?

mysql - SQL - 为另一个数字插入一个数字

php - PHP/MySQL INSERT INTO 的空值