sqlserver主键设计的注意点建站知识
导读:1建站知识在数据库设计中,主键用于惟一地标识表中的某一条记录公司网站建设seo网站关键词优化。
在设计主键的时候往往需要考虑以下几点: 1.无意义性:此处无意义是从用户的角度来定义的。这种无意义在一定程度上也会减少数据库的信息冗余。常常有人称呼主键为内部标识,为什么会这样称呼,原因之一在于“内部”,所谓内部从某种程度上来说就是指表记录,从大的范围来说就是数据库,如果你在设计的时候选择了对用户来说有意义的信息来作为主键,那么迟早会面对用户提出对这块信息进行更新的需求网站建设,那么你就违背了它应有的静态。 2.静态性:主键除了唯一地标识一条记录及外键的关联外,应不再考虑其建设网站公司他的意义,最理想的状态就是在产生后不再变动,所以在主键值产生后应考虑不对他进行更新等操作。如果进行了更新操作那么至少说明这块信息对于用户来说是有一定的意义,那么你就违背了应有的无意义性。(对数据进行整合等操作时可能需要对主键进行处理,这样做是为了保证数据库的完整性——记录的唯一,不在此考虑范围之内。) 无意义性往往可以决定其静态性。 3.简seo网站排名优化软件短性:既包含主键组成字段数量要少,还包含主键中单个字段存储类型简短,一般采用整形;对于前者主要考虑的是外键关联的因素;对于后者主要考虑的是性能。主键的简短对表的关联便捷性及检索的性能有极大的帮助。 看看下面具有缺陷的“主生产计划表”主键设计方案(MsSQL):
复制代码 代码如下:
--主表 CREATE TABLE PP_MPSHeader( BillNo VARCHAR(20) NOT NULL PRIMARY KEY, PlanDate DATETIME NOT NULL ) --从表 CREATE TABLE PP_MPSBody( BillNo VARCHAR(20) NOT NULL, LineNumber SMALLINT NOT NULL, ProductID INT NOT NULL, ProductQty DECIMAL(18,2) NOT NULL, PRIMARY KEY(BillNo,LineNumber) ) --设置外键 ALTER TABLE PP_MPSBody ADD CONSTRAINT FK_PP_MPSHeader_MPSBody FOREIGN KEY(BillNo) REFERENCES PP_MPSHeader(BillNo)
这是典型的主从表结构。主表记录什么时候下达哪个单号的主计划,从表记录的是此计划生产哪些产品各多少数量,通过BillNo进行关联。当用户在下达一份主生产计划后,很可能会发现由于粗心大意输错了BillNo中计划单号信息,那么在他修改单号时,代码编写者需要在代码中控制从表的单号跟随主表的单号进行变动,否则单据将在外键的约束下无法保存,如果没有外键的约束,那么数据将失去其完整性。 如果按照上面的3个注意点,解决方案如下(MsSQL):复制代码 代码如下:
--主表 CREATE TABLE PP_MPSHeader( BillId INT PRIMARY KEY, BillNo VARCHAR(20) NOT NULL, PlanDate DATETIME NOT NULL ) --从表 CREATE TABLE PP_MPSBody( BillId INT PRIMARY KEY, LineNumber SMALLINT NOT NULL, ProductID INT NOT NULL, ProductQty DECIMAL(18,2) NOT NULL, PRIMARY KEY(BillId,LineNumber) ) --设置外键 ALTER TABLE PP_MPSBody ADD CONSTRAINT FK_PP_MPSHeader_MPSBody FOREIGN KEY(BillId) REFERENCES PP_MPSHeader(BillId)
声明: 本文由我的SEOUC技术文章主页发布于:2023-05-24 ,文章sqlserver主键设计的注意点建站知识主要讲述主键,标签,sqlserver主键设计的注意点建站知识1网站建设源码以及服务器配置搭建相关技术文章。转载请保留链接: https://www.seouc.com/article/web_6226.html