2016-09-22 45 views
0

我已经转移到一个新的工作场所,我们有这个特定的数据库体系结构。该数据库结构由4个表这种数据库建模称为什么?它有什么好处?

驱动

1)硕士

在这里定义列代码,名称和描述

行1 - 的EmpID - ID为员工

行2 - EmpName - 雇员的姓名

2)硕士数据

在这里定义列码值作为行

行1 - EMPID - 123

行2 - EMPID - 124

行3 - EmpName - 约翰

行4 - EmpName贾森 -

3)主类型映射

在这里,你映射的列可以被映射

行1 - EMPID - EmpName

4)映射的数据

在这里,你映射列

行1的值硕士, - 标识万事达的ID类型数据行3

行2 - - 数据行1主类型的硕士的ID数据行2 - 主的标识类型数据行4

这种方式可以在结构内部创建任意数量的表/列/关系。有人知道这样的数据库架构叫什么吗?有什么好处?在看到添加,维护和理解数据增加了多少复杂性之后,我发现很难找到它的好处。

我被告知,它可以节省您创建数百个表和这些列的内存在表中,这将是空的。我在RDBMS上做了大量工作,并且没有在NoSQL DB中工作的经验,但我认为NoSQL无论如何都可以在屏幕后面工作?

+0

我们可以称之为Greenspun的第10种数据模型 - 一种特殊的,非正式指定的,错误缠身的,数据库内部数据库的一半缓慢实现。或者更简单地说,一个愚蠢的想法。这种设计的开销可能超过了空值的存储需求,而不是避免你创建大量结构,它可以防止你轻松地查看或维护数据中的任何结构,保持完整性,索引等。这是完全可能的设计没有空值的标准化表格。 – reaanb

+0

我会说它是“不好的做法”。 –

回答

3

“在发现添加,维护和理解数据增加了多少复杂性之后,我发现很难找到它的好处。”

这是你需要记住这个可怕的想法的唯一事情。 (顺便说一下,它通常被标记为通用名称“EAV”或“实体属性值”(谷歌这个词,你会发现很多赞美以及大量的呕吐,你评估和判断各自的论点)。

“通用名称”,因为实际上许多变种都是可能的,它们在一些细节上都有所不同。举个例子:你的是一个变体,用记录的实体属性值之间的“映射”替换“实体ID”的通常概念。您对该映射的概念是二元的(对于称为“映射”的东西并不罕见),如果要将两个以上的实体属性值“映射”在一起,则会产生其他问题。)

也就是说,如果你是在极少数情况下所有以下为真:

- 你真的真的面临“稀疏”数据
- 数据的性质改变了所有的时间(每年一次不“所有的时间”)
- 没有dba技能可用于解决这个问题的钻机ht way(= dba方式),或者以正确的方式处理它的应用程序的影响太大并且令人生畏
- 并且对数据不可避免地缺乏任何形式的完整性执行都不是问题业务

那么你可能会使用这样的方案来解决你的问题。