仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 683|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL网页设计SQL Server表的主键计划应注重的成绩

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:15:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
平台即服务PaaS、基础设施即服务IaaS、软件即服务SaaS都是我们比较熟悉的MySQL学习教程,现在又出现了数据库即服务DBaaS,以基于云的方式存储结构化数据。</p>关于数据库的逻辑计划,是一个很普遍的成绩。本文次要针对开辟使用中碰到在MSSQLServer长进行表计划时,对表的主键计划应注重的成绩和响应的办理举措。
主键计划近况和成绩
关于数据库表的主键计划,一样平常而言,是依据营业需讨情况,以营业逻辑为基本,构成主键。
好比,发卖时要纪录发卖情形,一样平常必要两个表,一个是发卖单的提要形貌,纪录诸如发卖单号、总金额一类的情形,别的一个表纪录每种商品的数目和金额。关于第一个表(主表),一般我们以票据号为主键;关于商品发卖的明细表(从表),我们就必要将主表的票据号也放进到商品的明细表中,使其联系关系起来构成主从干系。同时该票据号与商品的编码一同,构成明细表的团结主键。这只是一样平常情形,我们略微将这个成绩延长一下:假设在明细中,我们每种商品又大概以分歧的代价体例发卖。有部分按扣头代价发卖,有部分按一般代价发卖。要纪录这些情形,那末我们就必要第三个表。而这第三个表的主键就必要第一个表的票据号和第二个表的商品号再加上本身必要的信息一同组成团结主键;又大概其他情形,在第一个主表中,自己就是以团结体例组成团结主键,那末也必要在从表中将主表的多个字段增加出去团结在一同构成本人的主键。
数据冗孑遗储:跟着这类主从干系的延长,数据库中必要反复存储的数据将变得愈来愈复杂。大概当主表自己就是团结主键时,就必需在从表中将一切的字段从头存储一次。
SQL庞大度增添:当存在多个字段的团结主键时,我们必要将主表的多个字段与子表的多个字段联系关系以猎取满意某些前提的一切具体情形纪录。
程序庞大度增添:大概必要传送多个参数。
效力下降:数据库体系必要判别更多的前提,SQL语句长度增添。同时,团结主键主动天生团结索引
WEB分页坚苦:因为是团结主键体例(关于多半的子表),那末在WEB页面上要举行分页处置时,在自联系关系时,难于处置。
办理计划
从下面,我们已看到现有布局存在着相称多的坏处,次要是招致程序庞大、效力下降而且倒霉于分页。
为办理上述成绩,本文提出:当使用体系背景数据库表间存在主从干系时,数据库表分外增添一非营业字段作为主键,该字段为数值型;大概当该表必要在使用中举行分页查询时,也招考虑云云计划。一样平常地,我们也能够几近为任何表增添一个与营业逻辑有关的字段作为该表的主键字段。
因为该字段要作为表的主键,那末其主要前提是要包管在该表中要具有独一性。同时,分离SQLServer数据库本身的特征,能够为其创建一个自增列:
createTABLET_PK_DEMO
(
U_ID BIGINT NOTNULLIDENTITY(1,1),
&ndash;独一标识纪录的ID
COL_OTHER VARchar(20)NOTNULL ,
&ndash;其他列
CONSTRAINTPK_T_PK_DEMOPRIMARYKEY NONCLUSTERED
(U_ID)&ndash;界说为主键
)

可是,SQLServer中的自增列却存在一个对照为难的现实,那就是该字段一旦界说和利用,用户没法间接干涉该字段的值,完整由数据库体系本身把持:
完整数据库体系把持,用户没法修正值
在数据库的公布和定阅时,利用自增列会对照贫苦
恢复部分数据时,利用自增列会对照贫苦
该列的值必需在拔出数据后才干猎取
鉴于此,倡议不以自增列的体例来界说,而是参考Oracle数据库体系中序列,在SQLServer体系中完成相似Oracle数据库体系序列功效。这个详细鄙人面的大节中先容。我们只必要依照一般字段的界说体例修正表界说为:
createTABLET_PK_DEMO
(
U_ID BIGINTNOTNULL,&ndash;独一标识纪录的ID
COL_OTHER VARchar(20)NOTNULL,&ndash;其他列
CONSTRAINTPK_T_PK_DEMOPRIMARYKEY NONCLUSTERED(U_ID)&ndash;界说为主键
)
<p>如果你需要额外的功能的话,MySQL的普及性实际上可以让你发现总有一个厂商会提供准确的解决方案,而这个方案会满足你的需要和需求。
变相怪杰 该用户已被删除
沙发
发表于 2015-1-19 06:03:47 | 只看该作者
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-24 15:55:59 | 只看该作者
所以你总能得到相应的升级版本,来满足你的需求。
若相依 该用户已被删除
地板
发表于 2015-2-2 07:44:36 | 只看该作者
SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。
小妖女 该用户已被删除
5#
发表于 2015-2-7 17:44:18 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
再见西城 该用户已被删除
6#
发表于 2015-2-22 20:14:10 | 只看该作者
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
再现理想 该用户已被删除
7#
发表于 2015-3-7 02:27:19 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
因胸联盟 该用户已被删除
8#
发表于 2015-3-14 10:12:52 | 只看该作者
不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关
乐观 该用户已被删除
9#
发表于 2015-3-21 03:05:00 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 04:18

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表