Dav*_*542 2 database relational-database hierarchical-data database-schema
我有一个连接对象浏览器,我希望允许用户查看他们连接到的各种数据源。对象的查看器看起来像这样:
连接:Remote.1234.MySQL(3级源)
连接:Remote.abc.ElasticSearch(2级源)
连接:Local.xyz.MongoDB(3级源)
连接:Local.xyz.SQLServer(4级源)
换句话说,“源”是具有已知数量的级别和每个级别的已知“名称”的层次结构。虽然整个层次结构是可变的,但任何给定源的层次结构将始终具有相同的级别数和名称。建立关系模型的好方法是什么?我的想法是:
联系:
来源类型:
源类型级别映射:
ThreeLevelSource_Level1: # 例如,数据库
ThreeLevelSource_Level2: # 例如,表
ThreeLevelSource_Level3: # 例如,字段
然后对其他级别的层次结构执行相同的操作:
因此,基本上定义已知的层次结构,对于我们添加的每个新源,我们会将其附加到已知的层次结构级别之一。我正在考虑的替代方法是为每个新源创建一个新的层次结构,但是如果我们允许访问 25-50 个源,那么我们实际上将查看数百个表。
对这种类型的分层数据进行建模的好方法是什么?
(另外,是的,我熟悉现有的用于建模分层数据的一般方法,如此处所述 - What are the options for storage hierarchical data in a relational database? , How can yourepresent Heritage in a database? - 以下不是重复。)
响应 和relational-database标签hierarchic-data,后者在前者中是行人。
由于以下要求和之间的差异:
\n因此,我使用RecordandField来涵盖所有可能性,而不是传达关系定义的关系术语。
所有可能性都得到满足,但关系型和 SQL 兼容方法(例如 MS SQL Server)被认为是最佳方法,因为它已有 40 年的建立和成熟度,并且没有替代方案。
\nDataSource。这个解决方案是 100% 关系型的:Codd 的关系模型,而不是学术界宣传为“关系型”的不合格替代方案:
\n它可以在任何兼容 SQL 的平台上实现
\n它具有关系完整性(逻辑完整性,超越引用完整性,即 SQL 和物理完整性);关系力量;和关系速度。
\n通过 SQL ACID 事务,所有更新交互都很简单。
\n对于假冒的“SQL”和非 SQL,我们不提供任何保证。
\n我很欣赏作为一名开发人员,您关注数据值以及如何检索它。然而,为了支持第三个数据级别,首先需要两个级别的定义:
\n目录潜力
\n蓝色(参考簇)。
\n市场上可用、组织可能使用的 DtaSource 和定义。根据您的描述,假设为 42。
developer,而不是 a user_admin,因为设置很重要(较低级别取决于它),并且它描述了每个数据源的物理功能和限制。目录实际
\n绿色(识别簇)。
\n组织实际签订和使用的数据源和定义。比方说12。此时我们有了连接地址;港口;和users。它直接并通过CHECKS调用函数来约束 CataloguePotential。
该级别定义内容(实际存在的表),它不包含数据值。
\n保持 SQL 思维方式,因为这将是最谨慎的做法,因为它是一个已建立的标准,已经成熟了 40 年,因为它为我们提供了最大的灵活性:CatalogueActual 形成了 SQL Catalogue。
\n同样,我对集合中的对象使用了术语Recordand ,而不是and ,后者暗示了关系和 SQL 含义。FieldTableColumn
SQL 平台
\n该级别可以由查询 SQL 目录的程序自动填充。
“SQL”应用程序和非 SQL 套件
\n由于缺少目录,填充是手动的。这可以通过user_admin. 约束将是您的程序尝试尝试查询以验证用户提供的表定义。
当前数据
\n黄色(事务群集)
\nuser通过其连接从数据源查询网页的当前数据。假设是,我已将 user::webpage 视为中心并进行管理(每个user连接一个;每个user网页一个),而不是 OO 对象。
你需要:
\n简单层次结构
\na 单父层次结构,用于复制 SQL 服务器中目录中的固定定义级别,以及为假装“SQL”和非 SQL 构建的目录中的变量级别。
RecordStructRecordType具有代表性FieldTypeRecord,它是 的实例RecordType,而actualField是 的一个更狭义的定义FieldType。方法/结构
\n为了处理 a Struct,其在定义方面与 a 相同Record,并允许 aStruct包含 a Struct,我们需要一个抽象级别,即...
Article
\n 要么
Field,这是存储的原子单位,异或Struct,其中包含Articles需要一个 Exclusive Subtype 集群,在Subtype文档中完全定义了 SQL 实现细节
\n方法/数组
\n支持以下Array内容Fields:
Field,因此作为子表实现。\nNumElement值为 1。Field这使得标量所需的独占子类型簇变得多余。这是七次迭代后的进度。\xc2\xa0\xc2\xa0它显示了表关系级别(属性级别对于内联图形来说太大)。
\n
假设
\nJS(或其他)对象对于网页/用户来说是本地的。\xc2\xa0\xc2\xa0如果您的对象是全局的,则值表需要限制为连接。
数据模型在单个PDF中给出:
\n我所有的数据模型都是在IDEF1X中呈现的,它从 1980 年代初就可用,这是关系数据建模的唯一符号,自 1993 年以来一直是标准。
\n对于刚接触 Codd 关系模型或其建模方法的人来说, IDEF1X简介是必不可少的读物。请注意,IDEF1X 模型是完整的,它们具有丰富的细节和精度,显示了所有必需的细节,而本土模型由于不了解标准的要求,因此定义要少得多。这意味着,需要完全理解该符号。
\n