【发布时间】:2011-07-19 02:06:17
【问题描述】:
我正在为我父亲的公司创建一个目录管理系统。我在过去几年中设计和推出的当前版本既好又高效,但它有其局限性,如果他想将属性添加到项目类型,那么我必须将其添加到数据库中和代码并重新启动系统。
现在,对于下一个主要版本,我正在尝试修改它,以便他可以自己定义所有列 - 所以我有一个 ItemType 表,他在其中命名项目类型;一个 ItemTypeProperty 表,以便他可以定义所有列及其数据类型,一个 Item 表,其中存储所有项目及其 ItemType 的 ID,以及一个 ItemPropertyValue 表,它使用 ItemID、ItemTypePropertyID 并存储值。目的是使他能够说他想要一个类型的列,这样,如果有两个 ItemType 称为 Range 和 Collection,他可以说他希望 Collection 是 Range 的一个属性。
这里有没有人曾经面临过这种系统的创建,如果是这样,在我走得更远之前,我有什么主要的遗漏或者我可能想要考虑的任何事情吗?我的意思是像我以后可能遇到的某种问题,我现在可以通过做某事来避免?或者是否有任何技术可以提供很多帮助?我曾尝试过 Linq,但当时很难根据自己的需要对其进行自定义。我目前正在使用带有 Sql Server 2008 的 VB.Net 2.0(服务器设置的限制;不受我控制)。我创建了自己的系统,该系统源自 MVC 类型的架构。
提前致谢。
问候,
理查德
编辑:
我的新数据库结构是:
表格:ItemType
- 身份证
- 姓名
表格:ItemTypeProperty
- 身份证
- ItemTypeID
- 姓名
- 说明
- 数据类型
表格:项目
- 身份证
- ItemTypeID
表格:ItemPropertyValues
- 身份证
- 物品ID
- ItemTypePropertyID
- 价值
【问题讨论】:
-
“我正在尝试修改它,以便他可以自己定义所有列” - 听起来很像 SharePoint!
-
嗯,是的——确实是这样。我知道我可以为此使用 SharePoint,但那时我不会自己创建它。我基本上会采用预先开发的产品(其他人的工作)并对其进行定制以适合公司。因此,我根本不会觉得这是我的工作,当我看到这一切融合在一起时的感觉,我知道这都是我的工作,是我自己开发它的动力。
-
它是否是“你所有的工作”在很大程度上是无关紧要的。重要的是它是否符合业务需求?
-
当前版本可以 - 但它不像我希望的那样灵活。目前需要一段时间才能添加一些东西,例如产品的属性。它还需要大量的测试。我想要达到的目标将减少这些时间。此外,它没有时间限制(因为当前版本可以高效运行并满足业务需求),而且这是我在 uni 的最后一年项目,所以对我来说,无论这是否是我的全部工作做 i> 重要。
-
您所说的架构通常称为 EAV 实体-属性-值,它真的很烂!使用关系数据库有点失败。
标签: .net sql-server vb.net architecture