关于主键和外键sql server

moxing99 2002-12-03 05:57:38
我是一个初学者,请问,我创建了两个表,如:
表1的结构:number(主键),name(unique约束),sex,birthday,address
表2的结构:name(外键),bookname,telphone,country
我的认为是在表1被操作的时候,表2也会随着变化,例如,向表1加数据,表也会把相应的数据填写进去,是吗?

还有一个问题就是,用哪种数据类型好varchar,char!!
请向告,非常感激!!
...全文
116 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xmboy 2002-12-03
  • 打赏
  • 举报
回复
第一步删除约束
ALTER TABLE 表2
DROP CONSTRAINT 外键约束名
GO
第二步重键约束
ALTER TABLE 表2
ADD FOREGIN KEY(name)REFERENCES 表1(name)ON DELECT CASCADE ON UPDATE CASCADE
GO
搞定!
Rbuyangel 2002-12-03
  • 打赏
  • 举报
回复
这样设计的表也不是太好,表2对表1只是部分函数依赖,不满足第2范式。在数据库不断变化后会引起问题的。
zhouzdsoft 2002-12-03
  • 打赏
  • 举报
回复
外键为其他表的关键字,当insert数据时如果表中存在外键约束的话,首先检索插入的数据在另外一个表中是否存在,如果存在才能插入成功,当delete
时要先删除另一表中的当前数据后,才能删除带有外键约束的表中的数据
Dullboy 2002-12-03
  • 打赏
  • 举报
回复
对于你的问题,我觉得应该先找一本入门的书籍看一下。
但在此我想说一下pengdali(大力)提出的级联的问题,很多初学者都很喜欢(即便是一些有一点经验的数据库管理员)都很喜欢用级联的关系,而且Microsoft在它的产品Access和sql server里都很容易实现,但是我必须警告设计者,这是一种非常危险的做法,尤其在删除的时候,很容易破坏数据库的完整性。
为了删除数据而冒着破坏数据完整性的做法是不值得的。事实上数据量的大小往往并不是影响查询速度的主要原因,主要原因是查询的算法,有经验的数据库设计者很少删除数据,而是给要删除的数据做一个标记,真正要物理删除也不可能交给级联去处理。
因此,再次警告数据库的使用者,慎用级联关系。
老万2018 2002-12-03
  • 打赏
  • 举报
回复
你的表建得好像不好,你这些数据应该建在同一个表中,至于你问的问题大力已回答了
pengdali 2002-12-03
  • 打赏
  • 举报
回复
级连更新,删除!!!在设计表右键
moxing99 2002-12-03
  • 打赏
  • 举报
回复
前面的那个问题,好象回答的不够清楚!!!!为什么我修改表1的数据,表2的数据不变呀!
stone2003 2002-12-03
  • 打赏
  • 举报
回复
设置一个关系 表1name和表2name
用varchar好

34,594

社区成员

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

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