因此,我目前正在重建一个现有网站,该网站供公司内部用于项目管理,从本质上讲,它是一个错误跟踪实用程序,具有一些客户支持和财务操作链接到其中。
当前数据库模型是非常重复的,一个很好的例子是,当前将UserId链接到一条记录(FK关系到包含所有有关用户信息的用户表中),然后有关该用户的所有信息也存在于桌子。
我的任务是改善网站和模型的功能;但是,我想减少网站中数据的重复(这是规范化还是将未链接的项目分解为单独的表?)。我不确定执行此操作的最佳方法是什么。我正在考虑为数据库生成创建脚本,并在VS中创建一个新的数据库项目,然后修改数据库,然后生成一些脚本以从旧数据库中填充新的数据库模型。
我计划使用实体框架和ASP。NET MVC 2构建网站,因为我认为它提供了最灵活的模型,可用于网站的修改和维护。
之所以问所有这些,是因为我对使用数据库和修改现有数据库以在应用程序和网站中使用非常熟悉,但是我试图找到构建数据库的最佳方法。
我很好奇是否有任何最佳方法可以做到这一点,或者我是否应该使用其他工具来做到这一点?
编辑:提供有关模型的更多信息
我们使用了4个主要领域:
案例(错误,功能,工作任务等)2。门票(技术支持活动)错误(从日志记录库生成的错误,基本上是包含客户信息的堆栈跟踪)许可证(跟踪每个客户许可证可以修改这些许可证)这些是在以上四个主要领域中混合使用的对象。
用户(使用系统的人)客户(使用我们软件的人们)商店(客户使用我们软件的地方)产品(我们的软件)人际关系
案例:案例必须有一个用户,可以有一个客户,商店,错误,票证和/或产品
票证票证必须有一个用户和一个客户,可以有一个商店,错误和/或产品
错误:错误必须具有产品,可以具有箱子,票证,商店和/或产品
许可证:许可证必须具有产品和客户,可以具有商店
就像我说的那样,如果操作正确,网站非常基本,数据库也不是非常复杂。
当前,数据库没有FK约束,每个表上都有大量信息的复制,还有很多额外的表,这些表以不同的名称重复。
例如
每个案例类型都有一个单独的表,因此有一个FeatureRequest,Bug,Tasks,Completed等表,它们都包含相同的信息。