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

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

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

参照Oracle序列的功能,我们需要在SQL Server数据库中创建一个新表,以管理序列值:

create TABLE T_DB_SEQ
(
SEQ_NAMEVARchar(50) NOT NULL ,–序列名称
SEQ_OWNER  VARchar(50) NOT NULL DEFAULT ’DBO’,
–序列所有者(SYSTEM_USER)
SEQ_CURRENT BIGINT NOT NULL DEFAULT 0,–序列当前值
SEQ_MIN BIGINT NOT NULL DEFAULT 0,–序列最小值
SEQ_MAX BIGINT NOT NULL DEFAULT 0,–序列最小值
SEQ_MAX BIGINT NOT NULL DEFAULT 0,–序列最大值
SEQ_STEPINT NOT NULL DEFAULT 1,–序列增长步长
IF_CYCLEINT NOT NULL DEFAULT 0,–是否循环(0,不循环;1,循环)
CONSTRAINT T_DB_SEQ PRIMARY KEY CLUSTERED
(SEQ_NAME,SEQ_OWNER)–主键
)

应用系统为需要创建自增列的表创建一个序列名称,在表“T_DB_SEQ”中反映为数据库中的一行。

第一,需要为需要建立序列的表创建一个序列。采用方法:F_create_SEQ(序列名)。该函数传入序列的名称,在表“T_DB_SEQ”插入一行。序列的所有者,采用系统变量SYSTEM_USER。

第二,获取下一个值。采用方法:F_GET_NEXT_SEQ_VAL(序列名)。该函数根据序列名获取该序列的下一个值,根据当前值与增长步长得到。同时,该函数保证在同时获取同一个序列时,应保证并发一致性。

第三、将返回值返回到应用使用。

此外,为保证应用的完整性,可能还需要提供一些方法的重载方法,同时提供一些其他方法:

获取序列当前值:F_GET_SEQ_CUR_VAL(序列名)

设置序列值:F_SET_SEQ_VAL(序列名)

删除序列:F_DEL_SEQ(序列名)

判断序列是否存在:F_SEQ_exists(序列名)

在主从关系的表设计中,子表也使用序列字段作为唯一主键,将父表的序列字段作为外键关联:

create TABLE T_PK_DEMO_C
(
U_ID  BIGINT NOT NULL ,–唯一标识记录的ID
COL_OTHER VARchar(20) NOT NULL ,–其他列
P_ID  INT NOT NULL ,–父表ID
CONSTRAINT PK_T_PK_DEMO_C PRIMARY KEY
NONCLUSTERED (U_ID)–定义为主键
CONSTRAINT FK_T_PK_DEMO_C FOREIGN KEY (P_ID)
REFERENCES T_PK_DEMO(U_ID) ON delete CASCADE,
)

使用序列的问题及解决办法

由于系统使用一个额外增加一个字段作为主键,因此没有为业务逻辑建立主键约束。比如在企业用户信息表中,要求企业中用户登录名必须唯一。一般在创建表时,以登录名作为主键,这个时候在数据库层自然的创建另一个主键唯一性约束。而现在没有使用登录名作为主键,那么就没有这个约束。解决办法:

一是在数据库层解决。可以为该表创建一个唯一(UNIQUE)约束或者唯一索引。如:

alter TABLE T_PK_DEMO ADD CONSTRAINT C_T_PK_DEMO UNIQUE NONCLUSTERED(COL_OTHER)-唯一约束

create UNIQUE INDEX IX_T_PK_DEMO ON T_PK_DEMO(COL_OTHER) – 唯一索引

二是在应用端解决。也就是在应用中判断该列是否有重复值,然后根据判断结果来保证唯一性。

我们注意到,在之前的例子中,主键采用了NONCLUSTERED(非聚蔟)的索引方式。关于如何设计索引,不是本文的重点,在这里仅提供一个建立索引时采用聚蔟方式还是非聚蔟方式的一个一般原则:

作为非业务字段的主键列,是一个没有重复值的、基本不进行更新操作的列。并且,在SQL Server数据库中,聚蔟索引在一个表中只能有一个。因此,聚蔟索引非常重要,需要留给更重要的字段来使用。因此,对照上表和根据聚蔟索引的重要程度,在此处采用非聚蔟方式创建其索引。

具体应用

采用这种主键设计方式,有诸多好处,这已经在前文说明。现在就以一个具体的应用来说明如何使用这个主键。

当前的应用系统基本上都已经采用B/S方式,尽管现在的网络速度已经有大幅度的提高,但是由于在WEB应用上用户数量众多、同时基本上所有的运算都集中在WEB应用服务器上,所以在WEB设计上更要考虑到性能的优化,以减少网络流量和对服务器的压力。最常见的一个应用就是列表方式展现时的分页方式。一般的,在数据量小的情况下,一般不会怎么注意这个问题,通常采用将数据完全取出,然后在WEB服务器上进行分页。但是,当数据量庞大时,这种方式就会导致速度降低,甚至根本不可用。所以,一般采用存储过程,在数据库端进行分页。

举报

  • 相关推荐
  • 大家在看
  • 小度首发智能硬件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服务器资源,为开发者提供�

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

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

  • 移动、联通、电信三大运营商集体表态:精简套餐、资费透明

    电话套餐资费眼花缭乱、莫名其妙订了新业务,你遇到过这些问题吗? 据央视新闻报道,日前,中国移动、中国联通、中国电信三大运营商承诺将在透明消费、套餐精简等方面采取实质性举措。 中国移动 推出十项服务承诺,其中包括业务订购环节必须得到客户明确同意,办理完成后立即向用户发送告知短信。 变更套餐时,无合约约定变更条件的,48小时内办结;还有用户可�

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

    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,就是选择一个充满音乐魅力的生活空间。

这篇文章对你有价值吗?

今日大家都在搜的词: