如何说服某人规范化数据库?

前端之家收集整理的这篇文章主要介绍了如何说服某人规范化数据库?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我一直在工作,我在编写一个PHP网站与我无法控制的数据库进行交互的工作.数据库是由同事多年的“同事”设计的,所以最终决定留给他们来决定.

当我第一次在这个项目上登上时,我去了同事,并解释说数据库模式似乎有缺陷.我解释了数据库归一化的重要性,以确保数据完整性问题,节省磁盘空间,并使程序员(我)的工作更轻松.我甚至给出了在当前设计中如何插入,删除和更新异常可能发生的例子.然而,同事向我解释说,他们不想使项目的数据库复杂化,而且不会改变时期.

所以现在我几个月进入这个项目,每次我必须加入两个表,把一个值与一个一个一个的关系插入,我拉出头发. (所以这个属性应该是主要关系的属性.)数据库看起来很可怕,我恐怕这几年将会回到我身上,因为我编写了使用数据库的前端.

有没有人有任何建议如何说“优秀”的同事正确设计数据库?还是关于如何避免光顾年轻的设计的任何建议,我没有任何部分?我今天应该拒绝这样的项目吗?在我的代码中发表评论数据库不是我的做法?

谢谢.

编辑:响应评论的其他信息…

我知道数据库的去规范化可以用于速度目的,所以我不能忽略这个.对于那些没有听过这个策略的读者,我将举一个例子.通常,数据库设计者具有列出用户街道,城市,州和邮政编码的地址关系.虽然每个人都知道一个邮政编码决定了城市和州,因此构成一个索引邮政编码到城市和州的表.通常,数据库设计人员将组合这两个表,将它们以规范化方式进行归一化,每个用户地址的查询都需要从地址表到zip表的连接.这最终加快了查询过程,并且是对数据库设计的部分进行去规范化的合理推理.

为了在这里填写一些细节,数据库是为旅游请求系统而设计的,因此数据与访问者信息,日期等相关.当前数据库使用的模式从头到尾都是不可预测的.从变量命名模式(例如:num_of_visitors,arrivalMethod等)的最简单的不一致到为单个状态一对一属性定义了单独的关系.示例:statusID表示巡视请求的状态,它只能从一组可能的状态中选择一个有效状态(已批准,被拒绝,挂起,取消).由于某些原因,数据库具有状态表,其中包含:旅游关系的关键),statusID.这允许为每个旅游请求定义多个状态.其中,通过设计,旅游请求在任何给定时间只应处于一个状态.所以这是设计的缺点,而不是我的监督.

解决方法

从我的经验来看,不幸的是,这些类型的情况往往是不可战胜的战斗.您可以做的一些事情,以避免与设计的距离可能是:

>在代码中实现数据访问层,尽可能抽取尽可能多的实际数据库设计.这样,您可以以更好的格式组织您的代码,并有效地“远距离”您的使用,并被归咎于坏的数据库设计.
>在DB中创建视图,以更逻辑的格式访问数据
>当你有机会,如果你可以摆脱它,做小的重构表/代码

我不会在代码中放弃贬损的意见,因为它很可能会回到困扰你.在数据访问层,您可以提出客观/非令人反感的评论,解释为什么要抽出特定的设计,以及如何设计不同的设计.

如果事情真的很糟糕,没有人会支持你,可能是寻找另一份工作的时候了.

猜你在找的MsSQL相关文章