首页 > 语言 > 关键词  > 教程最新资讯  > 正文

SQL Server上进行表设计时表的主键设计问题

2010-06-23 16:54 · 稿源:赛迪网

关于数据库的逻辑设计,是一个很广泛的问题。本文主要针对开发应用中遇到在MS SQL Server上进行表设计时,对表的主键设计应注意的问题以及相应的解决办法。

主键设计现状和问题

关于数据库表的主键设计,一般而言,是根据业务需求情况,以业务逻辑为基础,形成主键。

比如,销售时要记录销售情况,一般需要两个表,一个是销售单的概要描述,记录诸如销售单号、总金额一类的情况,另外一个表记录每种商品的数量和金额。对于第一个表(主表),通常我们以单据号为主键;对于商品销售的明细表(从表),我们就需要将主表的单据号也放入到商品的明细表中,使其关联起来形成主从关系。同时该单据号与商品的编码一起,形成明细表的联合主键。这只是一般情况,我们稍微将这个问题延伸一下:假如在明细中,我们每种商品又可能以不同的价格方式销售。有部分按折扣价格销售,有部分按正常价格销售。要记录这些情况,那么我们就需要第三个表。而这第三个表的主键就需要第一个表的单据号以及第二个表的商品号再加上自身需要的信息一起构成联合主键;又或者其他情况,在第一个主表中,本身就是以联合方式构成联合主键,那么也需要在从表中将主表的多个字段添加进来联合在一起形成自己的主键。

数据冗余存储:随着这种主从关系的延伸,数据库中需要重复存储的数据将变得越来越庞大。或者当主表本身就是联合主键时,就必须在从表中将所有的字段重新存储一次。

SQL复杂度增加:当存在多个字段的联合主键时,我们需要将主表的多个字段与子表的多个字段关联以获取满足某些条件的所有详细情况记录。

程序复杂度增加:可能需要传递多个参数。

效率降低:数据库系统需要判断更多的条件,SQL语句长度增加。同时,联合主键自动生成联合索引

WEB分页困难:由于是联合主键方式(对于多数的子表),那么在WEB页面上要进行分页处理时,在自关联时,难于处理。

解决方案

从上面,我们已经看到现有结构存在着相当多的弊端,主要是导致程序复杂、效率降低并且不利于分页。

为解决上述问题,本文提出:当应用系统后台数据库表间存在主从关系时,数据库表额外增加一非业务字段作为主键,该字段为数值型;或者当该表需要在应用中进行分页查询时,也应考虑如此设计。一般地,我们也可以几乎为任何表增加一个与业务逻辑无关的字段作为该表的主键字段。

由于该字段要作为表的主键,那么其首要条件是要保证在该表中要具有唯一性。同时,结合SQL Server数据库自身的特性,可以为其建立一个自增列:

create TABLE T_PK_DEMO
(
U_ID  BIGINT NOT NULL IDENTITY(1,1),
–唯一标识记录的ID
COL_OTHER VARchar(20) NOT NULL ,
–其他列
CONSTRAINT PK_T_PK_DEMO PRIMARY KEY NONCLUSTERED
(U_ID)–定义为主键
)

但是,SQL Server中的自增列却存在一个比较尴尬的事实,那就是该字段一旦定义和使用,用户无法直接干预该字段的值,完全由数据库系统自身控制:

完全数据库系统控制,用户无法修改值

在数据库的发布和订阅时,使用自增列会比较麻烦

恢复部分数据时,使用自增列会比较麻烦

该列的值必须在插入数据后才能获取

鉴于此,建议不以自增列的方式来定义,而是参考Oracle数据库系统中序列,在SQL Server系统中实现类似Oracle数据库系统序列功能。这个具体在下面的小节中介绍。我们只需要按照普通字段的定义方式修改表定义为:

create TABLE T_PK_DEMO
(
U_ID  BIGINT NOT NULL ,–唯一标识记录的ID
COL_OTHER VARchar(20) NOT NULL ,–其他列
CONSTRAINT PK_T_PK_DEMO PRIMARY KEY NONCLUSTERED (U_ID)–定义为主键
)

举报

  • 相关推荐
  • 小度首发智能硬件MCP Server,开启物理世界智能交互新时代

    小度科技正式推出MCP Server开放平台,支持开发者通过自然语言控制1800余家厂商的智能设备。该平台提供两大核心服务:小度音箱MCP Server支持设备控制、语音播报等功能;小度IoT MCP Server开放全屋设备控制、场景联动等能力。平台大幅降低开发门槛,开发者仅需简单配置即可调用API。小度已与美的、格力等1800余家厂商合作,覆盖智能音箱、智能屏等全场景设备,并打造超200万间智慧酒店客房。未来小度将持续深化MCP协议与生成式AI融合,推动智能家居向"万物AI互联"时代迈进。

  • 小米手表/手环下半年OTA更新计划发布:手表微信应用来了

    今日,小米集团手机部副总裁、可穿戴部总经理张雷发布2025年下半年OTA更新计划,涉及多款小米手表、小米手环、小米耳机,还有最新发布的小米AI眼镜。 下半年OTA更新计划(部分)如下: 手表 REDMI Watch 5系列,预计9月上旬全量推送 支持手表微信应用,社交沟通更及时 REDMI Watch 5 eSIM,预计9月上旬全量推送 支持手表微信应用,社交沟通更及时

  • 国内MCP服务合集平台去哪看?MCP server资源平台推荐

    ​在当今人工智能技术飞速发展的时代,AI模型与外部工具和服务的交互能力正逐渐成为推动技术进步的关键因素。今天,我们聚焦于一个新兴的、极具潜力的平台——AIbase,它为全球的AI开发者和研究人员提供了一个前所未有的MCP(Model Context Protocol,模型上下文协议)服务器集合平台,助力AI技术的进一步发展。 AIbase平台致力于整合全球优质的MCP服务器资源,为开发者提供�

  • 老人为乘凉挤满肯德基 街道办回应:店员表示无奈

    近日山东聊城一家肯德基店内,多位老人占座乘凉却不点餐,引发热议。视频显示老人们或聊天打牌,甚至躺椅睡觉。店员表示因天气炎热,老人自发前来纳凉,只能在不影响其他顾客的前提下进行劝说。街道办回应称这是自发行为,店铺有自主经营权,目前主要依靠店员劝导。这一现象既反映了高温下老人对清凉场所的需求,也给商家经营带来困扰,如何平衡二者关系值得思考。

  • 装库科技与金山壹号战略携手,以设计力与交付力共筑可成交的好房子

    7月17日,东华置业主办的"精装购房节"活动在金山壹号项目十周年庆典期间举行。装库科技受邀出席并与金山壹号项目签署战略合作协议,双方将在"团装模式"下深度合作,共同打造品质住宅样板。东华置业认可装库科技"以交付为抓手、以产品力为导向"的团装模式。装库科技将提供从户型优化到交付全流程的定制化方案,助力项目提升产品力,实现营销效率与客户满意度双提升。未来双方将持续深化合作,共建让购房者满意的品质住宅。

  • 电路板过孔、槽设计注意事项之线路板板打样

    本文总结了PCB设计中过孔设计的关键要点:1)过孔处理方式包括开窗工艺(易测试但影响防护)、盖油工艺(常规选择)和塞油工艺(高防护但成本高);2)过孔直径建议0.3-0.5mm,过小增加加工难度,过大易产生孔凹陷;3)非金属化槽孔宽度应≥1.0mm;4)插件孔公差控制在±0.13/-0.08mm;5)大面积铜皮需设置透气孔;6)半孔应采用专用工艺,槽孔长宽比≥2。合理设计过孔对PCB电气性能和加工质量至关重要。

  • 安德马丁创始人现场互动!斐雪派克“设计有说”活动成都启幕

    7月10日,斐雪派克联合国际室内设计大奖ANDREW MARTIN在成都举办设计师交流活动。活动聚焦厨房设计,探讨如何通过设计回应社会变迁与用户需求。多位设计师认为斐雪派克的"社交厨房"兼顾功能性与情感连接,创始人卢从周指出厨房体现的不仅是美学,更是人际关爱的美学。现代厨房已超越烹饪功能,成为家庭社交、休闲中心,开放式设计促进家人互动。斐雪派克将精密工艺与简约艺术融合,通过智能辅助提升下厨体验。设计师们展望未来厨房将融合科技与人文,成为自然自在的生活空间。活动深入探讨了厨房设计与用户需求的连接点,呈现了斐雪派克社交厨房理念如何应对现代生活挑战。

  • 墨刀AI生成原型图,产品设计快人一步

    国内原型设计平台墨刀发布"AI生成原型图2.0"功能,30秒即可生成可编辑原型图,大幅提升产品设计效率。该功能通过AI技术解决传统原型设计周期长、效率低、修改繁琐等痛点,支持文字描述或图片上传自动生成高保真原型图,并可二次编辑优化。这一创新不仅标志着墨刀AI能力的全面升级,更代表产品设计方式的一次革新,显著加快产品迭代速度。未来,AI原型设计有望成为行业标配,助力企业更快响应市场需求,提升产品竞争力。

  • 三喇叭对称设计,ALATS Q6音响打造立体音乐空间

    ALATS Q6音响以300W强劲功率重新定义听觉盛宴。采用三喇叭单元对称排列设计,低音醇厚震撼心灵,高音通透如穿透云层的阳光。配备高信噪比功放芯片,精准控制每个声音细节,即使最大音量也能保持清晰不失真。简约时尚的外观设计能完美融入各种家居环境。这款音响不仅带来前所未有的立体音效体验,更能满足音乐发烧友和影音爱好者的需求,是生活中不可或缺的音乐伴侣。选择ALATS Q6,就是选择一个充满音乐魅力的生活空间。

  • 80后领军设计师黄全的家:让艺术与烟火气自然融合

    斐雪派克与Green+BAZAAR合作,邀请设计师黄全以上海新居为样本,展现生活与艺术在家庭空间的完美融合。通过打通厨房与客厅、餐厅的隔墙,打造出开放流动的大空间,自然光透过挑空区域洒落在大理石岛台上。嵌入式冰箱、酒柜等电器与空间设计融为一体,既满足实用需求又与艺术品和谐搭配。开放式厨房增强了家人互动,烹饪时能照看孩子或与客人交谈,让厨房成为家庭情感联结的中心。这种"社交厨房"理念超越了单纯的烹饪功能,成为家人最常聚集的场所,无论是早晨咖啡时光还是周末聚餐,都让家庭交流充满轻松氛围。