数据库字段设计怎么样定长度

十一文 2009-05-24 06:27:24
数据库字段设计怎么样定长度?

我看见有好多设计时候,字段长度都是统一的用多少长度
没有为每个字段定义其特定的长度 为什么?有什么好处

还有好多长度是2的倍数 为什么有什么理由 ?

另外数据路设计有什么统一的规范吗?
...全文
984 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
生姜有味 2011-08-07
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 ws_hgo 的回复:]
看你要设计什么表
给个例子
--个人会员

SQL code

create table BJUserInfo
(
ID int identity(1,1) primary key,
Title nvarchar(200),--会员名
CreateTime Datetime default convert(varchar(10),getdate(),120),
……
[/Quote]
PostCode nvarchar(100),--邮编
这个太浪费了吧
soft_wsx 2009-05-27
  • 打赏
  • 举报
回复
很简单

比如说在单位资料表里 定义单位名称的长度为nvarchar(50),当前单位名称只有10个字时,实际存储就是10个字,20字节,

nvarchar 与 varchar不同,前者比后者*2的字节数


如果是固定长度nchar(10),当单位名称为9字时可以存储,后补空格,当前单位名称超10字时,超出的部分无法存储,执行时会得到错误提示
人鱼传说 2009-05-27
  • 打赏
  • 举报
回复
要根据实际情况来定,适当的预留空间是必要的,但字段长度越大,字段数量也比较大时,表的数据量比较大时其效率会影响比较大
十一文 2009-05-26
  • 打赏
  • 举报
回复
ji加分 等答案
gwq2009 2009-05-25
  • 打赏
  • 举报
回复
不知道!!!!!!!!!!!!!!!!!!!!!!
jueyingfd 2009-05-25
  • 打赏
  • 举报
回复
这并没有什么统一不通一的,你得根据自己需要,你像你上面那个证件类型和目前年薪,还有币种类型和省,市级都没必要弄成长度50的,弄成10或20都可以,弄得长了白占空间,浪费资源,明白?
十一文 2009-05-24
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 lihan6415151528 的回复:]
hk nvarchar(50),--户口
Number nvarchar(50),--证件号码
NumberType nvarchar(50),--证件类型
SalaryYear nvarchar(50),--目前年薪
MoneyType nvarchar(50),--币种类型
province nvarchar(50),--省
City nvarchar(50),--市级

[/Quote]

这个为什么都是50 了???

有什么好处?
是否如15楼所说的??

只是规范??
ws_hgo 2009-05-24
  • 打赏
  • 举报
回复
看你要设计什么表
给个例子
--个人会员
create table BJUserInfo
(
ID int identity(1,1) primary key,
Title nvarchar(200),--会员名
CreateTime Datetime default convert(varchar(10),getdate(),120),
ModifyTime Datetime,
IsHidden bit default 0,
IsSystem bit default 0,
IsChecked bit default 1,
Version nvarchar(50) default 'cn',
OrderNo int default 1,
OwnerName nvarchar(100),
Keyword nvarchar(50),
Description nvarchar(500),
Hits int default 1,
Sex nchar(10),
Born DateTime,
hk nvarchar(50),--户口
Number nvarchar(50),--证件号码
NumberType nvarchar(50),--证件类型
SalaryYear nvarchar(50),--目前年薪
MoneyType nvarchar(50),--币种类型
province nvarchar(50),--省
City nvarchar(50),--市级
Phone nvarchar(50),--家庭电话号码
Mobilephone nvarchar(50),--个人电话
CompanyPhone nvarchar(50),--公司电话
EMail nvarchar(50),--电子邮箱
Address nvarchar(100),--地址
PostCode nvarchar(100),--邮编
Education nvarchar(100),--教育程度
IsTop bit default 0,
IsNew bit default 0,
IsElite bit default 0,
IsMarry nvarchar(10),--是否结婚
PictureUrl nvarchar(100),--个人图片
HomePage nvarchar(100),--个人主页
JobSkills nvarchar(500),--职业技能与特长
PasswordTip nvarchar(100),--密码提示
PasswordAnswer nvarchar(100)--答案
)
lihan6415151528 2009-05-24
  • 打赏
  • 举报
回复
为以后打基础。
hery2002 2009-05-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xming4321 的回复:]
引用 8 楼 ai_li7758521 的回复:
统一长度没必要吧?
我看到好多数据库设计的 只要是类型相同的 长度都是那么几种 并没有为不同字段定义他们各自的长度 为什么》
[/Quote]
这个主要是规范,一般大型的数据库软件设计中,都有对应的设计规范,
这样才能使不同的团队设计出来的东西,
其他团队的也很容易熟悉.
比如说,规定单据类型为20个字节,日期类型为smalldatetime等等,
根据不同的规范来统一.
haitao 2009-05-24
  • 打赏
  • 举报
回复
数据长度要么是定长,要么是变长
定长的如单据编号,是业务需求里规定的——但是最好也确认一下,日后会不会升级变化
变长的,就按最大的设,反正按实际使用占用空间的
JonasFeng 2009-05-24
  • 打赏
  • 举报
回复
一般熟悉了,建表就很简单的。

甚至可以说是一个相对机械的动作。
ChinaJiaBing 2009-05-24
  • 打赏
  • 举报
回复

根据业务经验了..
kingcsx666 2009-05-24
  • 打赏
  • 举报
回复
统一定长一点,扩展比较好
LamarChen 2009-05-24
  • 打赏
  • 举报
回复
最好是根据自己数据的特点来定,
同时要考虑到以后的扩展性,为以后的开发留点余地
十一文 2009-05-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ai_li7758521 的回复:]
统一长度没必要吧?
[/Quote]

我看到好多数据库设计的 只要是类型相同的 长度都是那么几种 并没有为不同字段定义他们各自的长度 为什么》
ai_li7758521 2009-05-24
  • 打赏
  • 举报
回复
统一长度没必要吧?
ai_li7758521 2009-05-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xming4321 的回复:]
那为什么字段长度都是统一的用多少长度 ?
[/Quote]根据你的字段内容来定,最好预留点空间,以备扩展
十一文 2009-05-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 xming4321 的帖子:]
数据库字段设计怎么样定长度?

我看见有好多设计时候,字段长度都是统一的用多少长度
没有为每个字段定义其特定的长度 为什么?有什么好处

还有好多长度是2的倍数 为什么有什么理由 ?

另外数据路设计有什么统一的规范吗?
[/Quote]
那为什么字段长度都是统一的用多少长度 ?
malin2670372 2009-05-24
  • 打赏
  • 举报
回复
学习.....
楼主很有思想
加载更多回复(4)

27,580

社区成员

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

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