社区
分析与设计
帖子详情
求证数据库数据冗余问题!!
youli78
2008-11-28 10:47:25
我要做个有省市区3联动的注册功能
方案1、js,传省市区中文参数进用户表
方案2、建3个表(省市区),ajax读出,传ID进用户表
经理说用2好,用1会数据冗余,我不苟同,特向各位大大求证,请说清原因
...全文
222
11
打赏
收藏
求证数据库数据冗余问题!!
我要做个有省市区3联动的注册功能 方案1、js,传省市区中文参数进用户表 方案2、建3个表(省市区),ajax读出,传ID进用户表 经理说用2好,用1会数据冗余,我不苟同,特向各位大大求证,请说清原因
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
以专业开发人员为伍
2008-12-01
打赏
举报
回复
[Quote=引用 8 楼 youli78 的回复:]
那您觉得我应该使用哪种方法才是最佳呢?[/Quote]
例如一个人员信息,姓名并不能唯一代表一个人,所以我们常用一个单独的表来保存人员信息。但是对于“及其简单的值”,例如性别、年龄等公认的几百年固定不变的概念,我们当然直接使用值(而不是索引)。对于省市名称,例如全中国绝对不可能有重复的省市名称,修改你一个省市名称也是几十年难得一遇,所以可以做为一个“极其简单的值”。实际上,当某个省市名称真的被修改时,例如韩国的“汉城”改名“首尔”,这时候写一个自动化程序去对所有数据进行处理,先测试好这个程序再正式执行它一次,就可以了。
但是,就算是吧“年龄”这样的几乎不可能改变概念的值作为复杂的值(另外建立一个年龄表,而其它地方用到年龄时仅仅用它的id与之关联)也不一定是毫无道理的。
我虽然赞同你的说法,但是没有肯定你的经理的做法有问题,是因为我的回复并不是单纯说技术,而是说流程。你们到底是谁在做设计?这个问题不是什么大不了的,哪一种实现都可以,尽早实现则什么损失也不会有,而拖着不实现才是更大的损失。
youli78
2008-11-28
打赏
举报
回复
恩,经理是说建3张表,关联
3张表我也已经找到了,数据也有的
但是我感觉上JS的访问速度比AJAX来得快
所以很疑惑,为什么不使用速度快的
用AJAX数据库访问不是很频繁吗?
以专业开发人员为伍
2008-11-28
打赏
举报
回复
嗯,严格地说,我们可以找出许多反证。当随便读取数据时,都要进行inner join操作,而不是直接读出省市名称,这反而对这类常见操作极大地降低了效率,甚至可以说这种减少冗余的做法实际上增加了冗余。原因就在于这个字段是“极其简单”的字段。如果一开始在系统分析时就感觉这个字段比较复杂,一般的读取这个字段的操作都要去查询详细信息,那么分开是真正的减小冗余了。如果一开始分析时都是非常简单地读取这个信息,那么设计数据库时直接使用它的值就其实才是减少冗余的。
不过,这是技术上很认真的说法。对于很简单的东西的开发,特别是一个系统刚刚开始起步的时候,有时候冗余点就冗余点吧。
qinhl99
2008-11-28
打赏
举报
回复
严格的说,谈不上有多少冗余吧,方案1不需要再join地域表,这样也没有不要,但方案2大家采用的更多些!
各有各的好处,你们经理没有告诉你在方案2种没有必要建三张表吗?哈哈
以专业开发人员为伍
2008-11-28
打赏
举报
回复
我们反过来说,对于“将简单的事情复杂化”你可能也没有必要每一个都给他纠正过来,对于对产品的价值影响不是很明确地分歧可以先按照其中一种方法实现,以后再想出聪明可靠的办法进行改造(或者一直使用下去)。
以专业开发人员为伍
2008-11-28
打赏
举报
回复
基本上,要讨论的是“信息是否足够简单”。通常没有绝对的,例如你在字段中有一个int类型用来保存“年龄”,如果有人说“年龄应该用一个复杂记录来表示而不应该用一个int来表示”,那么你请他解释清楚就可以了。
当你在字段中定义了一个字符串来表达省市名称时,如果需要对某个省市名称做扩展,那么扩展的新的table也可以用省市名称作为主键来关联到当前这个表,而不一定要单独建立一个省市名称表然后再当前这个表用它的id号码关联。对于上面的年龄设计也是如此。
其实对初步设计时已经确认极其简单的字段,应该直接使用原始的值用于数据库字段。
但是我要说的是,初学者会比较自然而然地使用想当然的做法去设计。然后学了一些东西并且背得挺多挺深的人会喜欢一开始就把事情搞复杂,他们坚持认为只有搞复杂了才能提高效率。等学的东西更多更实用了,会反而又看上去回复到初学者的那种自然而然的设计了,但是此时其实他能够把复杂多变的项目非常顺利地进行到底中间不纠缠。所以我对那些喜欢把事情搞复杂的人并不在情绪上去排斥。
怫悰
2008-11-28
打赏
举报
回复
冒泡帮顶接分
MicroDeviser
2008-11-28
打赏
举报
回复
经理说怎么做就怎么做啊
vrhero
2008-11-28
打赏
举报
回复
一般来说只有需要经常维护的数据才需要建立数据表,像行政区划这种数据每年的变动都很小,而且到市这一级更是几年几十年才有变化...如果考虑效率可以用枚举...
就算一定要用数据库像这种数据也没有建三个表的必要,假如以后要加上县区你是不是要建第四个表?
一品梅
2008-11-28
打赏
举报
回复
省市表是固定数据,没必要用数据库存储.
youli78
2008-11-28
打赏
举报
回复
[Quote=引用 6 楼 sp1234 的回复:]
嗯,严格地说,我们可以找出许多反证。当随便读取数据时,都要进行inner join操作,而不是直接读出省市名称,这反而对这类常见操作极大地降低了效率,甚至可以说这种减少冗余的做法实际上增加了冗余。原因就在于这个字段是“极其简单”的字段。如果一开始在系统分析时就感觉这个字段比较复杂,一般的读取这个字段的操作都要去查询详细信息,那么分开是真正的减小冗余了。如果一开始分析时都是非常简单地读取这个信息,那么设计数…
[/Quote]
那您觉得我应该使用哪种方法才是最佳呢?
数据
库
全册简答题
1.试述
数据
、
数据
库
、
数据
库
系统、
数据
库
管理系统的概念。 正确答案:
数据
: 描述事物的符号记录称为
数据
。
数据
的种类有文字、图形、图象、声音、正文等等。
数据
与其语义是不可分的。 *解析: 在现代计算机系统中...
MYSQL
数据
库
管理与应用
MYSQL
数据
库
管理与应用知识
六、
数据
仓库详细介绍(ETL)经验篇
前几年数仓势微,是因为传统的那些工具
数据
库
等无法解决
数据
量进一步膨胀带来的计算
问题
,大
数据
火爆也是因为当时大
数据
开发门槛很高。可是最近两年随着大
数据
技术的成熟开发门槛越来越低了,
数据
仓库反而重新火起来...
数据
库
期中考试题库
1、要保证
数据
库
的逻辑
数据
独立性,需要修改的是||A||。 A: 模式与外模式之间的映射 B: 模式与内模式之间的映射 C: 模式 D: 三级模式 2、
数据
库
系统的
数据
独立性体现在||B||。 A: 不会因为
数据
的变化而影响...
【
数据
库
】 关系模式的规范化理论----一文让你轻松理解其中奥秘
文章目录关系模式设计中存在的
问题
关系的形式化定义
数据
依赖的基本概念函数依赖非平凡函数依赖、平凡函数依赖完全函数依赖和部分函数依赖传递函数依赖关键字和超关键字
数据
依赖的公理系统函数依赖的逻辑蕴含...
分析与设计
13,190
社区成员
5,759
社区内容
发帖
与我相关
我的任务
分析与设计
.NET技术 分析与设计
复制链接
扫一扫
分享
社区描述
.NET技术 分析与设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章