这两种建立一对一关系,哪种方法好些?

boyandgirl222 2005-08-23 05:04:58
Create table t1
(
fid int identity(1,1) primary key,
f2 int
)

create table t2
(
fid int primary key,
f2 int,
foreign key (fid) references t1(fid)
)
----------------------------------------------
---------------------------------------------------
create table a
( a1 int identity primary key,
a2 int
)
create table b
(a1 int unique foreign key references
a(a1),
a2 int
)
...全文
118 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
GRLD8888 2005-08-23
  • 打赏
  • 举报
回复
这两种方法稍有不同:

两种方法的区别主要在于第二个表的创建上,第一个表都使用了标识列,
同时作为主键而存在。
第一种方法的第二个表的fid作为第一个表的外键,两个表建立了关联,
但是值得一提的是,这个这个字段的数据是可以重复的,
只要是主表中出现的数据都可以引用。

第二种方法的第二个表的fid也是作为第一个表的外键而存在,
也建立了两个表的关联,但不同于第一种方法的是,这个字段
上同时使用了唯一约束,这就说明这个字段的数据是不可以
重复的,实际上数据也就唯一啦。

个人观点认为,第一种方法比较好,因为表与表是通过主键和外键的
参照来体现的,外表的创建,从某种程度上来讲,是为了保证数据的
一致性,但是不同于主表的是,外键一般是可以重复的,除特殊情况
除外。这样数据才更加灵活,表的设计也更加合理。

举例:如主表是书的基本信息表即是主表,而第二个表是销售书的信息表
作为第一个表的外键,此时销售书的某个编号应该是可以重复,因为
某本书多次卖出是正常而且合理的。
wgsasd311 2005-08-23
  • 打赏
  • 举报
回复
两种是一样的,如果是一对一应该稍改改。
Create table t1
(
fid int identity(1,1) primary key,
f2 int,
foreign key (fid) references t2(fid)
)

create table t2
(
fid int primary key,
f2 int,
foreign key (fid) references t1(fid)
)
vivianfdlpw 2005-08-23
  • 打赏
  • 举报
回复
说错了 都是一对一:)
MorningTea 2005-08-23
  • 打赏
  • 举报
回复
被参考的字段为int identity(1,1),这样的表很难维护,可以说基本上不能维护,第一种肯定不好
vivianfdlpw 2005-08-23
  • 打赏
  • 举报
回复
第二种下b表a1列是唯一的(a和b是1对1)
,而第一种不是(a和b是1对多)
boyandgirl222 2005-08-23
  • 打赏
  • 举报
回复
foreign key (fid) references t1(fid)
a1 int unique foreign key references a(a1),

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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