uniqueidentifier作为主键和Int自动增长或者Varchar作主键有什么优势?

Racsinto 2003-10-17 08:02:28
在Oracle中,Int作为自动增长会用序列,而且会占据额外的存储空间而且不易管理。
不知道在SQLServer中uniqueidentifier作为主键和Int自动增长或者Varchar作主键有什么优势?
...全文
231 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuiniu 2003-10-18
  • 打赏
  • 举报
回复
agree yujohny(踏网无痕)
Racsinto 2003-10-18
  • 打赏
  • 举报
回复
明白了
welyngj 2003-10-17
  • 打赏
  • 举报
回复
做主键,比如:1,2,3,4,5,6,7,8,9,10。。。。
yujohny 2003-10-17
  • 打赏
  • 举报
回复
我举个例子说明一下
假如我是一个员工表,我会这样设计(ID,员工编号,....)
这时候员工编号设为主键
假如公司要调整员工编号,那这个时候唯一ID 就起了标识哪条记录的作用
因为一改了编号,如果没有ID 自动就没有唯一字段标识了
Racsinto 2003-10-17
  • 打赏
  • 举报
回复
那这样的话,那个ID自增字段有什么用呢?
yujohny 2003-10-17
  • 打赏
  • 举报
回复
我一般保留ID自增字段,同时用唯一编号做主键
Racsinto 2003-10-17
  • 打赏
  • 举报
回复
那主键字段类型在SQLServer中最好设置成什么呢?
我有点胡涂了.
yujohny 2003-10-17
  • 打赏
  • 举报
回复
uniqueidentifier:占空间,而且不好利用,就是读取比较都难处理
int:一样会占据额外的存储空间而且不易管理,就是不能过受控制
varchar:可以修改,灵活性强,不过要自己维护
数据库设计命名规范全文共6页,当前为第1页。数据库设计命名规范全文共6页,当前为第1页。 数据库设计命名规范全文共6页,当前为第1页。 数据库设计命名规范全文共6页,当前为第1页。 数据库设计命名规范 版本: V1.0 日期: 2015-11-30 拟定: 审核: 科大讯飞 教育产品事业部 数据库设计命名规范全文共6页,当前为第2页。数据库设计命名规范全文共6页,当前为第2页。 数据库设计命名规范全文共6页,当前为第2页。 数据库设计命名规范全文共6页,当前为第2页。 修订记录 时间 版本 修改点 修改人 目 录 1 目的 3 2 数据库名命名规范 3 3 数据库表命名规范 3 4 表字段命名规范 4 5 表设计规范 4 6 索引命名规范 5 7 主键、外键命名规范 5 目的 此规范包括数据库名命名规范、表名命名规范、字段名命名规范、表设计规范;适用对数据库设计命名规范全文共6页,当前为第3页。数据库设计命名规范全文共6页,当前为第3页。象开发、设计、测试人员。 数据库设计命名规范全文共6页,当前为第3页。 数据库设计命名规范全文共6页,当前为第3页。 数据库名命名规范 数据库用户名应包含"项目编号+"_"+"子系统编号"。如:"epsp_safety" 数据库名均以英文小写与下划线组合。 数据库字符编码:utf8。 数据库表命名规范 数据库表的命名以是名词形式且都为小写。 表名前应该加上前缀,表的前缀一个用系统或模块的英文名称缩写,前缀全部小写。如: 数据库表名应该有意义,并且易于理解,最好使用可以表达功能的英文单词或缩写,如果用英文单词表示,建议使用完整的英文单词。 表名不可以太长,最好不要超过3个英文单词长度(22个字母)。 在数据库表命名时应该用英文单词的单数形式,如员工表命名:应该为employee而不是employees。 如果是后台表命名时应该在表名基础上加上后缀 _b或_base。 在表创建完成前,应该为表添加表的注释。 表字段命名规范 字段名为小写。 数据库设计命名规范全文共6页,当前为第4页。数据库设计命名规范全文共6页,当前为第4页。字段名为有意义的单词,或单词的缩写。 数据库设计命名规范全文共6页,当前为第4页。 数据库设计命名规范全文共6页,当前为第4页。 如果字段由几个单词组成,则单词间用下划线("_")分割。 字段名限制在30个字符内。当字段名超过30字符时,可用缩写来减少字段名的长度,如information->info;address -> addr等。 系统中所有属于内码,即仅用于标识唯一性和程序内部用到的标识性字段,字段名称建议取为id,采用类型为整型或长整型。 系统中属于是业务内的编号字段,代表一定业务信息,建议字段命名为code ,如工单编号。 不要在数据库表字段(列名)中包含数据类型,如:datetime。 不要在数据库表字段(列名)命名时重复表名,可以使用表名首字母或缩写(不包含数据库表名前缀)。 不要在数据库表字段(列名)命名时,使用数据库关键字,如:name,time ,datetime ,password 等。 表设计规范 所有字段在设计时,除以下数据类型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary、varbinary外,必须有默认值。字符型的默认值为一个空字符值串'';数值型的默认值为数值0;逻辑型的默认值为数值0;其中:系统中所有逻辑型中数值0表示为"假";数值1表示为"真"。datetime、smalldatetime类型的字段没有默认值时,必须为NULL。 当字段定义为字符串形时建议使用varchar而不用nvarchar。注:在MySQL5.0以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数据,起始位和结束位占去了3个字节 建议在大 数表中含有如下字段 数据库设计命名规范全文共6页,当前为第5页。数据库设计命名规范全文共6页,当前为第5页。字段名 数据库设计命名规范全文共6页,当前为第5页。 数据库设计命名规范全文共6页,当前为第5页。 说明 类型 默认值 CreatorID 创建者 int 0 CreatedTime 创建时间 Datetime NULL 字段的描述 字段必须填写描述信息(注释) 尽量遵守第三范式的标准(3NF) 表内的每一个值只能被表达一次(列名不重复)表内的每一行都应当被唯一的标示(标识唯一性,如自动增长主键) 表内不应该存储依赖于其他键的非键信息 索引命名规范 索引须按照IDX_table__,其中是建立索引的表名,
' + '\n' +'
' + '\n' +'
' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +' ' + '\n' +'
为表 [table name] 添加新字段
字段名
类型' + '\n' +'' + '\n' +'
宽度
允许空
主键
递增种子数 ' + '\n' +' 递增量 ' + '\n' +'
默认值
 ' + '\n' +' ' + '\n' +' ' + '\n' +'
'; var CCNS_program = "COCOON DB Tools"; var CCNS_version = "Final Release"; function getObjByID(n) { //This function was re-written form DreamWeaver v4.01 by Sunrise_Chen. var p,i,x; var d=document; if(!(x=d[n])&&d.all) x=d.all[n]; for(i=0;!x&&iint IDENTITY(1,1) PRIMARY KEY CLUSTERED \n" + ")" oFormSql.sTblName.value = sObjName; oFormSql.sTblType.value = "TABLE"; oFormSql.sSqlString.value = sSqlString; if(!confirm("你确认要新建 "+sObjName+' 表吗?')) break; oFormSql.submit(); } break; case "设计": if(!sObjName){alert("请选择对象"); return false;} sSqlString = "SELECT * FROM [" + sObjName + "]"; oFormSql.sTblName.value = sObjName; oFormSql.sTblType.value = sObjType; //oFormSql.sSqlString.value = sSqlString; oFormSql.sSqlString.value = ""; oFormSql.sOper.value = "Design"; oFormSql.submit(); break; case "显示所有对象" : oFormSql.sOper.value = ""; oFormSql.sSqlString.value = ""; oFormSql.sTblName.value = ""; oFormSql.sTblType.value = ""; oFormSql.submit(); break; case "清空" : if(sObjType!="TABLE"){alert("你不能清空该对象。");break;} oFormSql.sOper.value = ""; oFormSql.sSqlString.value = "DELETE * FROM ["+sObjName+"]"; oFormSql.sTblName.value = sObjName; oFormSql.sTblType.value = sObjType; if(!confirm("你确认要清空 "+sObjName+' 表吗?')) break; oFormSql.submit(); break; case "新建查询" : sTblName = prompt("请输入查询名称:","") while(!checkInput(sTblName)){alert('名称中包含非法字符,请重新输入');sTblName = prompt("请输入表名",'');} if(!sTblName) return false; sSqlString = "CREATE VIEW ["+sTblName+"] \nAS \n" oFormSql.sSqlString.value = sSqlString; alert("请在SQL框里将语句填写完整。"); oFormSql.sSqlString.focus(); } } function showFieldType(o){ var oDivType = getObjByID("divFieldType"); var oFieldType = getObjByID("selFieldType"); if(!o){if(oDivType) oDivType.style.display='none'; return;} if(!oFieldType) return; window.currElement = o; oFieldType.value = o.value; oDivType.style.top = event.y + document.body.scrollTop - event.offsetY -4 ; oDivType.style.left = event.x + document.body.scrollLeft - event.offsetX -4 ; oDivType.style.display=""; oFieldType.focus(); } function checkFieldType(s,i){ if(window.currElement){ window.currElement.value = s; if(i) window.currElement.form.fieldSize.value = ""; } } function showDetial(o){ if(!o) return; var iSW = parseInt(screen.AvailWidth); var iSH = parseInt(screen.AvailHeight); iW = 300; iH = 100; var newWin = open('about:blank','','width='+iW+',height='+iH+',top='+((iSH/2)-(iH/2))+',left='+((iSW/2)-(iW/2))); newWin.document.title = CCNS_program + " - Detial Page        "; newWin.document.body.innerHTML = o.title; } function doOper(o,sTblName){ var iSW = parseInt(screen.AvailWidth); var iSH = parseInt(screen.AvailHeight); iW = 520; iH = 260; var oFormSql = getObjByID("formSQL"); var sSqlString = ""; switch(o.value){ case "新增" : var newWin = open('about:blank','','width='+iW+',height='+iH+',top='+((iSH/2)-(iH/2))+',left='+((iSW/2)-(iW/2))); newWin.document.write(sNewFieldString.replace(/\[table name\]/g,sTblName)); newWin.document.title = CCNS_program + " - New Field        "; break; case "删除" : sSqlString = "ALTER TABLE [" + sTblName + "] \n" + " DROP COLUMN [" + o.form.fieldName.value + "]"; oFormSql.sSqlString.value = sSqlString; if(!confirm("确认要删除“"+o.form.fieldName.value+"”列吗?")) return false; oFormSql.sOper.value = "Design"; oFormSql.submit(); break; case "修改" : sSqlString = "ALTER TABLE [" + sTblName + "] \n" + " ALTER COLUMN [" + o.form.fieldName.value + "] " + o.form.fieldType.value + " " + (o.form.fieldSize.value.length?"("+o.form.fieldSize.value+")":"") + " " + (o.form.fieldNull.checked?"NULL":"NOT NULL"); oFormSql.sSqlString.value = sSqlString; if(!confirm("确认要修改“"+o.form.fieldName.value+"”列吗?")) return false; oFormSql.sOper.value = "Design"; oFormSql.submit(); break; case "新记录" : iW = 600; iH = 480; var newWin = open('about:blank','','scrollbars=yes,width='+iW+',height='+iH+',top='+((iSH/2)-(iH/2))+',left='+((iSW/2)-(iW/2))); newWin.document.write(sNewRecString); newWin.document.title = CCNS_program + " - New Record        "; break; case "删" : if(o.tblName.length<1||o.sCondition.length<1){alert("条件不正确,不能删除。");return false;} sSqlString = "DELETE * FROM ["+o.tblName+"] WHERE "+o.sCondition; oFormSql.sSqlString.value = sSqlString; if(!confirm("确认要删除吗?")) return false; oFormSql.submit(); break; } } function changePage(o,i){ var oFormSql = getObjByID("formSQL"); switch(i){ case 0 : oFormSql.PageNo.value = o.form.gotoPage.value; break; case 1 : oFormSql.PageNo.value = 1; break; case 2 : oFormSql.PageNo.value = parseInt(o.form.PageNo.value)-1; break; case 3 : oFormSql.PageNo.value = parseInt(o.form.PageNo.value)+1; break; case 4 : oFormSql.PageNo.value = 9999; break; } oFormSql.submit(); } function doNewRec(o){ var sSqlString = "INSERT INTO ["+o.tblName.value+"] (" for(var i=0;i0){ sSqlString += "ORDER BY [" + oForm.orderField[oForm.orderField.selectedIndex].value + "]"; sSqlString += " " + oForm.orderBy[oForm.orderBy.selectedIndex].value; } oFormSQL.sSqlString.value = sSqlString; oFormSQL.submit(); } function checkInput(s){ if(s.indexOf('"')>=0||s.indexOf(' ')>=0) return false; return true; }

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧