设为首页 收藏本站
查看: 2363|回复: 0

[经验分享] SQL SERVER 数据库主键和外键的思考

[复制链接]

尚未签到

发表于 2016-11-6 06:48:56 | 显示全部楼层 |阅读模式
  什么是主键:
  数据库主键是指表中一个列或者列的组合,其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键,通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义PRIMARY KEY约束来创建主键,一个表只能有一个主键约束,而且主键约束中的列不能是空值,由于主键约束确保唯一数据,所一经常来定义标识列。
  每一个表都必须定义一个主键吗?
  我个人认为这个问题要看我们的表的功能,利用来存储大量数据,并需要经常查询的,建立主键可以加快查询效率,从而降低服务器的负担,但是如果没有这样的需求,建立主键反而消耗资源,所以这种情况下就没有必要建立主键了。
  有些人认为:虽然在有些数据库中,主键不是必须的,但是最好为每个表都设置一个主键,不管是但主键还是复合主键,它存在代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,以及本记录的修改与删除。
  
  主键的作用:
  1、 从上面的定义可以看出,主键是用于唯一标识数据库表中一行数据的。
  2、 作为一个可以被外键有效引用的对象。
  主键的设计原则:
  1、 主键应当是对用户没有意义的,比如说用户登陆一个系统的时候的登录id;而这种情况就不可能了:“学生表”需要支持这样的需求“学生注销后,可以重新激活自己的信息,而且还要保持自己的号码跟原来的一直”,这样的话主键就不能满足要求了。
  2、 唯一性,这个原则就不用多说了。
  3、 非空性:主键的值是不可重复的,也不可以为空。
  什么是外键:
  外键是建立于表与表之间的联系,方便程序的编写。
  外键的特点:
  1、 外键保证了数据的完整性
  2、 使用外键,简单直观,可以直接在数据模型中体现,无论是设计、维护等等。
  3、 外键在调试程序的时候可能会带来一些麻烦。
  如何插入外键:
   DSC0000.gif

  
  如上图所示,数据库中有三个表,下面我们给news和category表设置关系
DSC0001.gif
  
  如图所示,邮件单击“数据库关系图”,选择“新建数据库关系图”
DSC0002.gif

  
  出现上面的“添加表”
  选择要添加的表的名称,将这三个表全部添加到里面去(如下图所示)
DSC0003.gif

  
  我们将news的categoryId设置为category的Id的外键

DSC0004.gif

DSC0005.gif

  
  单击添加按钮

DSC0006.gif

  
  选择上边的“表和列规范”左边的三个小点号的按钮,点开后如下图所示
DSC0007.gif

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-296276-1-1.html 上篇帖子: SQL Server创建存储过程和删除存储过程 下篇帖子: SQL Server基于正则表达式的替换函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表