应该设什么为主键呢?

不若倾初 2010-07-29 03:32:01
设计一张数据库连接的表 有 如下字段
dburl 数据库地址 dbname 数据库名 dbtype 数据库类型 dbport 数据库端口 dbusername 数据库用户名 dbuserpwd 数据库用户密码

应该设置怎样的主键才能保证用户填写对应表单插入的数据不重复 而且合理呢
...全文
144 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fsj123fsj123 2010-07-29
  • 打赏
  • 举报
回复
一般 用id表示主键 用自增长的形式
claro 2010-07-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 yinzhen120 的回复:]
设计一张数据库连接的表 有 如下字段
dburl 数据库地址 dbname 数据库名 dbtype 数据库类型 dbport 数据库端口 dbusername 数据库用户名 dbuserpwd 数据库用户密码

应该设置怎样的主键才能保证用户填写对应表单插入的数据不重复 而且合理呢
[/Quote]两个层面的问题:(方式不唯一,仅供参考)
1、怎样合理建立主键?
主键的建立应当考虑合理因素,通常有这些原则:比如主键值不重复(唯一),主键值没有特殊意义(比如人员信息表中身份证不适合当主键),主键值应当越精简越好(比如不适合A字段+B字段+C字段等等)。
2、怎样保证用户插入数据不重复?
通过建议约束可以实现唯一性。

本题范例如下:
--设计一张数据库连接的表 有 如下字段 ,同时字段录入不允许重复
-- dburl 数据库地址 dbname 数据库名 dbtype 数据库类型 dbport 数据库端口
-- dbusername 数据库用户名 dbuserpwd 数据库用户密码

CREATE TABLE [数据库连接的表1]( --如有架构名,需要添加
[XiTongBH] [int] IDENTITY(1,1) NOT NULL,
[dburl] [varchar](20) NOT NULL,
[dbname] [varchar](20) NULL,
[dbtype] [varchar](20) NOT NULL,
[dbport] [int] NOT NULL,
[dbusername] [varchar](20) NOT NULL,
[dbuserpwd] [varchar](100) NOT NULL,
PRIMARY KEY CLUSTERED
(
[XiTongBH] ASC
),
CONSTRAINT [PK_约束名1] UNIQUE NONCLUSTERED
( --需要约束的字段,自己甄选
[dburl] ASC,
[dbtype] ASC,
[dbport] ASC,
[dbusername] ASC,
[dbuserpwd] ASC
)
) ON [PRIMARY]

不若倾初 2010-07-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 shmilywcd 的回复:]
SQL code

primary key (dburl,dbname,dbtype)
[/Quote]


这个可能不行吧 同一个数据库地址 同一个数据库名 难道 就不能有不同的用户名和密码?

难道非得所有的字段联合起来做主键么
不若倾初 2010-07-29
  • 打赏
  • 举报
回复
业务逻辑 就是表单中 让用户写入这些内容 然后保存 肯定要唯一
加ID怎么能保证 唯一呢 用户端不可能让他还输入一个什么ID吧
zhaojianmi1 2010-07-29
  • 打赏
  • 举报
回复
dburl 数据库地址 dbname 数据库名 dbtype 数据库类型 dbport 数据库端口

或者干脆加一个ID字段作为主键
Angel1201 2010-07-29
  • 打赏
  • 举报
回复
这...
设置不是关键
关键你字的业务逻辑是怎么样的
哪些需要唯一 只有你自己才清楚啊
billpu 2010-07-29
  • 打赏
  • 举报
回复
我一般是把主键用无意义的字段,比如自增长或者guid上,当然聚集索引可以挪走他用
天-笑 2010-07-29
  • 打赏
  • 举报
回复

primary key (dburl,dbname,dbtype)

27,579

社区成员

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

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