| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1104 人关注过本帖
标题:关系数据库的规范化
只看楼主 加入收藏
护城河部队
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-6-9
收藏
得分:0 
回复 6 楼 hu9jj
vf课上课没人听讲是主要的
2014-06-09 21:38
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用冬冬123在2014-6-5 09:46:47的发言:

正如h所说,境界到了自然就有对相应理论的要求,关系型数据库的规范化理论确实是很重要且必要的,但往往对于初学者来说却不易于理解,他们先要学会怎么使用一门技术,至于后期的深入则更应该是自学的内容。。。。
我觉得哦,数据库设计的规范绝不是后期才要深入的东西。一个良好的习惯是从一开始就养成的,不管是开车,还是设计数据库。
2014-06-10 09:18
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
据我所知,关系型数据库理论是计算机系学生必修课程,而其他专业学习VFP是不讲这些的,部分老师会提出这个问题,有兴趣的自学。

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2014-06-11 22:40
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用Tiger5392在2014-6-11 22:40:19的发言:

据我所知,关系型数据库理论是计算机系学生必修课程,而其他专业学习VFP是不讲这些的,部分老师会提出这个问题,有兴趣的自学。
的确如此。不过,我邪恶地猜测一下:可能有部分教授VFP的老师自己都不一定完全清楚数据库的设计规范。
2014-06-12 08:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不要说老师,现在社会上靠数据库吃饭的挨踢人也有不清楚的。我曾经外委一个网站的制作,连数据库的结构都亲自写好了给他们,居然前后两个班组都说看不懂,说MySQL不用这样的,似乎一切都可以靠SQL SELECT搞定,结果可想而知,网页界面做得再漂亮,最终都栽在后台的数据处理上。

授人以渔,不授人以鱼。
2014-06-12 23:26
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
我们这里最近也找了个公司对教务管理系统进行升级。那个公司设计表文件倒是很精确,但太精确了,精确到什么程度:除了各表文件之间的联络字段外(每表只有一个联络字段),没有一丁点儿的冗余。有时候要做个简单的查询就得跨两、三个表,甚至跨过五个表,累死人。
2014-06-13 08:26
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 16 楼 taifu945
第三规范根据实际情况是可以放松的。冗余数据必须可控,亦即程序自己能够严格同步所有数据。增加冗余度的确可以使编程相对简单,但同步也要消耗时间和增加复杂度,不会无代价的,自己把握一个“度”字而已。

授人以渔,不授人以鱼。
2014-06-13 10:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
冗余数据的危险在同步。举个例子,本论坛的用户头像,很多时候,某个用户变更了头像,我们是看不到的,需要机缘巧合,刷新了浏览缓存(按F5键),才会把新头像显示出来,原因在于浏览器为了加快速度,会把诸如头像这类(相对)静态的资源缓存在本地计算机存储设备上,下次显示网页时就不去网路上读数据了,这就是本地和远程服务器上各有一份数据,而当远程的源数据更新后,没有有效的机制通知本地浏览器重新读取,结果呈现了旧的数据——如果数据只有一份是不会出现这种问题的。这个风险对头像这类数据来说,可能没什么大碍,但对商业或法律、官方等的应用来说,可能会造成重大损失,第一是会发生上述看不到新数据的问题,第二是会发生不同的用户看到不同的数据的问题,那官司就有得打了。别以为贪点编程省事那么好玩,总求快必定有风险的,《老子》都说了,欲速恐不达,安全必定要付出某种代价,世界是守恒的,片面追求某方面的效率,最怕的是不自知在那些方面失去了多少(知道还好办,就怕不知道)。

数据的简单重复,以及永久储存运算结果,都属于冗余。

[ 本帖最后由 TonyDeng 于 2014-6-13 11:42 编辑 ]

授人以渔,不授人以鱼。
2014-06-13 11:39
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用TonyDeng在2014-6-13 11:39:45的发言:

冗余数据的危险在同步。举个例子,本论坛的用户头像,很多时候,某个用户变更了头像,我们是看不到的,需要机缘巧合,刷新了浏览缓存(按F5键),才会把新头像显示出来,原因在于浏览器为了加快速度,会把诸如头像这类(相对)静态的资源缓存在本地计算机存储设备上,下次显示网页时就不去网路上读数据了,这就是本地和远程服务器上各有一份数据,而当远程的源数据更新后,没有有效的机制通知本地浏览器重新读取,结果呈现了旧的数据——如果数据只有一份是不会出现这种问题的。这个风险对头像这类数据来说,可能没什么大碍,但对商业或法律、官方等的应用来说,可能会造成重大损失,第一是会发生上述看不到新数据的问题,第二是会发生不同的用户看到不同的数据的问题,那官司就有得打了。别以为贪点编程省事那么好玩,总求快必定有风险的,《老子》都说了,欲速恐不达,安全必定要付出某种代价,世界是守恒的,片面追求某方面的效率,最怕的是不自知在那些方面失去了多少(知道还好办,就怕不知道)。

数据的简单重复,以及永久储存运算结果,都属于冗余。
你说的这种情况就是读到了所谓的“脏数据”。
2014-06-13 13:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
冗余数据没有及时与源数据同步,就会脏,编程时贪求速度直接读中间数据就会这样。为了编程方便,有时设计冗余字段是有必要的,但必须注意那是用过即弃的,不要返回头再去读取,因为原始数据可能已经变化,特别是在多用户环境下。速度慢,比使用错误数据导致错失好得多。我之所以反感某些学编程的片面追求效率,就是这个原因,我发现他们除了追求效率这一指标,似乎从来不关心别的更重要的问题。

授人以渔,不授人以鱼。
2014-06-13 14:06
快速回复:关系数据库的规范化
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024249 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved