database-design - 在数据库中模拟用户定义的层次关系的最佳方法是什么?

标签 database-design hierarchical-data user-defined

本质上,我希望用户能够定义层次模型,但我需要允许用户在他们定义的模型中存储数据。这有意义吗?因此,用户将能够创建新的“单元类型”以分层方式组织,并决​​定如何组织这些类型的单元。一个简单的例子:在我假设的界面中,用户创建了三种单元类型,trunk、branch 和 leaf。然后用户定义它们之间的关系。叶子可以存在于层次结构中的任何一点,分支必须有一个主干作为父级。然后,用户可以创建这些单元类型的实例(作为单元),并可以根据模型中定义的规则来组织它们……在数据库中有这样做的好方法吗?

最佳答案

这是一个非常广泛的问题,但这可能会为您指明正确的方向。请注意,您只能将关系规则存储在数据库中。执行它们将取决于您的客户端代码。试试这个尺寸..

unit:
    unit id,
    name,

unit relationship:
    unit id,
    foreign unit id

然后您可以按以下方式使用您的单位关系表..

unit id 与其描述的单元有关。 foreign unit id 应该可以为空。

没有关系记录的单元只能存在于层次结构的根部。具有null foreign unit idunit 可以将任何其他unit 作为其父级。否则,unit 必须有另一个 unit 作为其父级,并且它的类型必须是在其关系记录中定义的类型之一。

至于存储实例本身,那应该很简单..

instance:
    instance id,
    unit id,
    parent instance_id

我确定您还需要其他字段(例如姓名),但我想您已经明白了。

关于database-design - 在数据库中模拟用户定义的层次关系的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/728137/

相关文章:

壁纸的 MySQL 表结构

sql - 在 SQL Server 中,将时间和日期拆分为两个单独的日期列是最佳做法吗?

sql - 闭表 根节点 数十百万节点查询性能

database - Oracle PIVOT 子句中的用户定义聚合函数

c# - "same"用户自定义转换存在两次时没有编译错误

mysql - 摄影网站的关系数据库设计

sql - 一对多还是多对多?

mysql - 如何创建MySQL分层递归查询

sql - SQL 中图形结构的闭包表等价物

php - Doctrine 1.2 中的用户定义例程?