我是一名网络开发人员,所以我对数据库知之甚少。我最近加入的公司有一个非常成熟的桌面ERP,内置.NET和SQL Server,他们为大型企业客户提供服务,设计工作正常。但他们没有开发任何基于网络的系统。但是数据库设计很不寻常。让我解释一下,然后我会发布我的问题。
所以,现在我和他们一起开发了一个基于Web的ERP(Web中桌面系统的复制品)。由于我正在从头开始构建应用程序,因此我们可以自由地修改任何我认为会产生积极影响的事情。
现在的设计是,
我认为这些信息已经足够了。现在我想问一下
感谢。
答案 0 :(得分:1)
您有两种选择:
使用它,并与它一起生活。
完全重新设计它。
我推荐#1,因为#2很难,你的同事和老板会怀疑地看待#2。你进步的任何问题都将归结为你疯狂的数据库设计。
您描述的数据库体现了经典的实体 - 值 - 属性设计错误。设计人员选择从数据库中移除所有含义到应用程序,而不是定义在话语领域中的实际实体上建模的表,并使用DBMS来强制执行和推断它们之间的逻辑关系。应该在数据库中的实体使用应用程序逻辑在内存中构造,该应用程序逻辑为S1
等提供意义。从数据库的角度来看,这绝对是一场噩梦。
这也是可以理解的。 EVA设计通常出现在数据库专业知识很少的地方,而且问题领域的理解很少。这加起来“任何东西都可以进入数据库”,EVA设计确实会有“任何东西”。在客户确定实际设计的程度 - 即每个数据库列的供应独立含义 - 应用程序充当一种DBMS代理。每个表都有大量未使用的列的事实表明它们的使用可能是由客户决定的:客户可以“添加一列”,并且应用程序从未使用的堆中提取一个。无需更改架构。这是动态!
整个行业都基于这个想法。例如,所谓的“主数据管理”工具归结为EVA设计,其中客户在应用程序中设计数据库,而应用程序以您描述的方式使用DBMS。