我查看了一个"数据库应用程序"并且发现它大的由包含名称 - 值对的平面表组成。关系不是作为DDL存在,而是通过使用提供"指针"的辅助表来存在。提供参考信息的其他表和列名称。这些关系在运行时通过泛型函数解决。
提供"关系的通用函数的元代码"实体之间看起来像
FUNCTION Translate (Element)
LOCAL c, t, r
SELECT Table, Column
INTO t, c
FROM Translator
WHERE Item = $Element
SELECT $c
INTO $r
FROM $t
WHERE Name = $Element
RETURN $r
END FUNCTION
并在上面的示例中,将解析为
Translate "Ele1" ==> "Bar"
Translate "Ele2" ==> NULL
Translate "Ele3" ==> "Bar2"
这些"关系"当然不完整,因为并非所有"价值观"表"目录"另一方面,引用可以很容易地将行添加到目录中,新的引用表通过"只是"创建并链接到应用程序中。将表和列名添加到" Translator"表。毋庸置疑,我无法为此应用程序开发ER模型,也不认为这样做会有意义。
问题:
这种方法/概念的文献中是否有技术术语?
是否有一个理论概念描述了这种存储数据的方式广告创建" functional / adhoc / indirect"依赖呢? (我可能不想称之为"关系")
最好用"设计模式来描述上述内容"?
答案 0 :(得分:1)
它是EAV,Entity-Attribute-Value的变体,具有从实际DBMS表到它们所代表的概念表的更复杂映射。遗憾的是,encoding of the tables and metadata tables of a DBMS不提供或使用正在执行的实际DBMS的元数据和功能。 (观察如何在函数中封装EAV转换是做错事的正确方法。)而且它是anti-pattern,其原因与EAV完全相同。