位置: 编程技术 - 正文

sqlserver主键设计的注意点(sqlserver如何设置主键)

编辑:rootadmin
在设计主键的时候往往需要考虑以下几点: 1.无意义性:此处无意义是从用户的角度来定义的。这种无意义在一定程度上也会减少数据库的信息冗余。常常有人称呼主键为内部标识,为什么会这样称呼,原因之一在于“内部”,所谓内部从某种程度上来说就是指表记录,从大的范围来说就是数据库,如果你在设计的时候选择了对用户来说有意义的信息来作为主键,那么迟早会面对用户提出对这块信息进行更新的需求,那么你就违背了它应有的静态。 2.静态性:主键除了唯一地标识一条记录及外键的关联外,应不再考虑其他的意义,最理想的状态就是在产生后不再变动,所以在主键值产生后应考虑不对他进行更新等操作。如果进行了更新操作那么至少说明这块信息对于用户来说是有一定的意义,那么你就违背了应有的无意义性。(对数据进行整合等操作时可能需要对主键进行处理,这样做是为了保证数据库的完整性——记录的唯一,不在此考虑范围之内。) 无意义性往往可以决定其静态性。 3.简短性:既包含主键组成字段数量要少,还包含主键中单个字段存储类型简短,一般采用整形;对于前者主要考虑的是外键关联的因素;对于后者主要考虑的是性能。主键的简短对表的关联便捷性及检索的性能有极大的帮助。 看看下面具有缺陷的“主生产计划表”主键设计方案(MsSQL): 这是典型的主从表结构。主表记录什么时候下达哪个单号的主计划,从表记录的是此计划生产哪些产品各多少数量,通过BillNo进行关联。当用户在下达一份主生产计划后,很可能会发现由于粗心大意输错了BillNo中计划单号信息,那么在他修改单号时,代码编写者需要在代码中控制从表的单号跟随主表的单号进行变动,否则单据将在外键的约束下无法保存,如果没有外键的约束,那么数据将失去其完整性。 如果按照上面的3个注意点,解决方案如下(MsSQL): 现在,主从表通过BillId进行关联,当产生一份生产计划时,生成一个BillId,对于用户来说根本没有意义,在随后单据信息的改动中也不会出现上面的主从信息协调问题。同时从表的信息量小于上面的缺陷设计。因为原外键BillNo的长度从个字节变成了现在的BillId4个字节,减少了信息的冗余。 这样的例子其实很多,比如: 有的设计原材料表时,使用零部件图号作为主键,那就意味着采购、生产、销售等等相关表中都会出现零部件图号的外键信息,当零部件图号信息发生变动时,这些所有先关的信息都需要跟着变动,这种缺陷如果不从根本上解决,那么你可能需要写个零部件图号变动处理过程,来批量处理这些问题,在处理的过程中可能你还得考虑处理的顺序问题……; 有的设计,使用身份证件号作为人员表的主键,但是身份证后来从位变成了位,这就意味着人员表中每个人的人员身份证信息都需要变动,如果你是某个社保机构此应用程序的设计人员,那么你就需要更新上百万条记录;那些所有由人员表通过身份证件号外联出去的信息记录将会以亿计数,那么也许余生你就不需要做其他工作了。 所以选择无意义的键值来作为主键的一部分,也是从长远意义上来避免类似这种改动的发生。

推荐整理分享sqlserver主键设计的注意点(sqlserver如何设置主键),希望有所帮助,仅作参考,欢迎阅读内容。

sqlserver主键设计的注意点(sqlserver如何设置主键)

文章相关热门搜索词:sql server主键设置,sql server主键设置,sqlserver主键的作用,sql server主键设置,sqlserver 主键,sqlyog设置主键,sqlserver 主键,sql server主键设置,内容如对您有帮助,希望把文章链接给更多的朋友!

SQL Server字符串切割函数 CREATEFUNCTIONfGetStrBySplit(@SourceVARCHAR(max),@IndexINT,@SplitCharVARCHAR(1))RETURNSvarchar(MAX)ASBEGINDECLARE@LenINTDECLARE@nINT=0DECLARE@ChIndexINTDECLARE@ResultVARCHAR(MAX)--获取总长度SET@L

CREATE FUNCTION sqlserver用户定义函数 创建用户定义函数,它是返回值的已保存的Transact-SQL例程。用户定义函数不能用于执行一组修改全局数据库状态的操作。与系统函数一样,用户定义函

Sql Server 转换函数的比较(Cast、Convert和Parse) 语法结构:1.Cast语法结构:CAST(expressionASdata_type[(length)])2.Convert语法结构:CONVERT(data_type[(length)],expression[,style])3.Parse语法结构:PARSE(string_valueASdata_type[USIN

标签: sqlserver如何设置主键

本文链接地址:https://www.jiuchutong.com/biancheng/348155.html 转载请保留说明!

上一篇:sqlserver数据库主键的生成方式小结(sqlserver,mysql)(sqlserver的主数据库是什么)

下一篇:SQL Server字符串切割函数(SQL server字符串存数据库大还是二进制大)

  • 总账会计的职责目标设定
  • 税后净营业利润和净利润的区别
  • 社保税局代缴
  • 承兑汇票大回头票是什么意思
  • 红字专用发票能作废吗
  • 农业企业增值税纳税实务实训心得
  • 注销税务注意事项
  • 已经认证的抵扣联不见了,怎么办?
  • 盘盈的固定资产通过待处理财产损益科目核算
  • 票据贴现利息怎么做账
  • 不相关企业之间的关系
  • 无形资产没有了
  • 零余额帐户如何转账
  • 企业用于存货的支出
  • 暂扣员工工资怎么做账
  • 融资租赁中承租人的权利
  • 开给别的公司的支票可以转给其它人去抵账?
  • 母公司占股子公司多少
  • 小微企业免税销售额填含税还是不含税
  • 免税销售额收入不含税收入怎么算
  • 个人取得利息需要缴纳增值税吗
  • 关于税前扣除的规定
  • 多缴税款能否跨年抵扣
  • 城市维护建设税的计税依据是什么
  • 国税局代开发票是否可代地税局征收城市维?
  • 已经认证抵扣的发票会计分录
  • 工地开工购买的鞭炮怎么入账
  • 收到别人的文章或书,应该怎样表示
  • 解放双手神器说说
  • 平时发票未上传怎么回事
  • 生产成本怎样结转科目明细
  • 厂房租金计入什么费用部门
  • php解析html文件
  • 房地产开发企业土地增值税怎么计算
  • php开发实例大全
  • 预缴的附加税怎么填表抵减
  • php调用其他php
  • typescript some
  • php使用正则表达式检测是否包含非数字
  • dedecms怎么改图片
  • 将织梦dedecms转换到wordpress
  • java删除类
  • MyBatis MapperProvider MessageFormat拼接批量SQL语句执行报错的原因分析及解决办法
  • 帝国cms获取当日发布的url链接
  • 汽车报废残值如何处理
  • 资产减值准备如何影响利润
  • 个人所得税汇算年收入不超过12万
  • 劳务派遣的公司值得去吗
  • 会计科目中的财务费用
  • 装修费用不摊销怎么入账
  • 出口退税申报的报关单无电子信息
  • 贷款保险费由谁承担
  • 社保扣费不成功会再次扣费吗
  • 个人向对公账户付款有风险吗
  • 什么是长期的
  • 客户用个人账户转4s店开公司的机动车发票
  • 工程类企业存货包括哪些
  • 使用权资产
  • sql2008数据库置疑
  • centos安装NVIDIA驱动
  • 苹果序列号查询
  • centos调出命令行
  • winscope是什么意思
  • wmpdmc.exe是什么意思
  • mac电脑上的通讯录怎么同步到手机上
  • window10路由
  • 安卓获取设备信息
  • 给div设置滚动条
  • unity unit
  • 用python定义一个函数
  • 我置顶你也只顶你
  • javascript的核心组成部分
  • JQuery之proxy实现绑定代理方法
  • js使用类
  • 普票已开发票怎么作废
  • 如果我中了双色球
  • 电子税务局企业账号是税号吗
  • 汽车销售流程有哪些环节?每个环节的主要内容是什么?
  • 临时税务登记有效期怎么填
  • 销售折让怎么开票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设