*主键

主键就是数据行的唯一标识。不会重复的列才能当主键。一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键.

*主键特点:1不能重复的列。2主键不能为null。

*同名时如何处理:王洋(大) 王洋(小)

*主键有两种选用策略:

业务主键和逻辑主键。

业务主键是使用有业务意义的字段做主键,比如身份证号、银行账号等;

逻辑主键是使用没有任何业务意义的字段做主键,完全给程序看的,业务人员不会看的数据。因为很难保证业务主键不会重复(身份证号重复)、不会变化(帐号升位),因此推荐用逻辑主键。

*选择什么样的列作为主键:

1.不允许为空的列。

2.没有重复的列。

3.与实际业务没有关系的列(逻辑主键)

4.稳定的列。(列中保存的数据不经常改变)

5.选择单列作为主键。(当通过多列共同唯一标识表中一条记录的时候,此时可以选择多列来工作组成一个主键,这种主键叫做:组合主键、复合主键、联合主键)一般不推荐使用组合主键。

6.尽量选择数字类型作为主键,不要选择字符串,或者数据类型比较大的列作为主键。(选择数据量比较小的列作为主键)

*当创建完毕一张表的时候,可以不设主键吗?

可以。但是建议每张表都应该有一个主键。

7.常见问题:

创建一个没有主键的表,插入数据,使用设计器删除时的问题。 如果没有主键,有重复数据,则则删除、更新的时候会有问题。但通过Sql语句来执行则可以。

外键:

当把数据拆分成两张表来存储的时候,每个表中都有自己的主键。其中一张表中,除了主键外,又多了一列,这列用来引用另外一张表中的主键,那么这列就是第一张表中“外键列”,有外键列的表就叫做“外键表”,相对来说,主键被引用的那张表就叫做“主键表”。因为外键列中引用的是另外一张表中的主键列的数据,所以外键列中的数据是不能随便写的,必须是在另外一张表中的主键列中已经存在的数据。

1,两张表中都有主键。

商品表的主键是:商品Id, 厂家表的主键是:厂家Id 但是,在商品表中需要引用厂家表,所以在商品表中增加一列,这一列是用来引用厂家表中的主键(厂家Id)的。所以在商品表中增加的这列就叫“外键”,商品表就叫外键表,厂家表就叫主键表。.

销售记录表如果再引用商品表,这时,销售记录表就是“外键表”,商品表又成了“主键表”

数据冗余 占用空间多。 想修改厂家信息得修改很多行

每次录入新的货物的话必须把厂家地址、厂家电 话等信息重新录入一次。

数据冗余: 1.存储空间的浪费 2.更新数据的时候需要将表中所有原数据都更新。

拆成两张表。 减少数据冗余,保证数据库的正确性 但是查询麻烦了

假设两张表中都有主键,A表,B表。A表中的主键为AId。B表中的主键为Bid. 这时,A表中引用了B表中的Bid作为一列,这时,我们就叫A表位B表的外键表,而B表叫做主键表。

SqlServer主键和外键的更多相关文章

  1. SQLServer 主键、外键、唯一等约束

    主键(primary key)约束.外键(foreign key)约束.唯一(unique)约束.检查(check)约束.默认值(default)约束实例 Oracle 有如下类型的约束:NOT NU ...

  2. SQL的主键和外键

    SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...

  3. SQL的主键和外键约束(转)

    SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...

  4. SQL 主键和外键约束

    SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...

  5. [转]SQL的主键和外键约束

    SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...

  6. SQL的主键和外键的作用

    SQL的主键和外键约束 转载自:http://www.cnblogs.com/ywb-lv/archive/2012/03/12/2391860.html感谢原文作者的总结 SQL的主键和外键的作用: ...

  7. SQL的主键和外键和唯一约束

    SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...

  8. Sql中的主键和外键

    SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...

  9. MySQL的几个概念:主键,外键,索引,唯一索引

    概念: 主键(primary key) 能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录的唯一和 ...

  10. SQL的主键和外键约束

    SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外 ...

随机推荐

  1. beego上传文件

    html代码: <form id="fform" method="POST" enctype="multipart/form-data" ...

  2. 数据结构:C_链表队列的实现

    数据结构链表形式队列的实现(C语言版) 1.写在前面 队列是一种和栈相反的,遵循先进先出原则的线性表. 本代码是严蔚敏教授的数据结构书上面的伪代码的C语言实现代码. 分解代码没有包含在内的代码如下: ...

  3. 转:C语言中的头文件可以自己写吗?

    转自:http://www.eefocus.com/computer00/blog/08-09/155791_9ebdc.html 一些初学C语言的人,不知道头文件(*.h文件)原来还可以自己写的. ...

  4. 【Python实战】Pandas:让你像写SQL一样做数据分析(一)

    1. 引言 Pandas是一个开源的Python数据分析库.Pandas把结构化数据分为了三类: Series,1维序列,可视作为没有column名的.只有一个column的DataFrame: Da ...

  5. HTTP2特性预览和抓包分析

    背景 近年来,http网络请求量日益添加,以下是httparchive统计,从2012-11-01到2016-09-01的请求数量和传输大小的趋势图: 当前大部份客户端&服务端架构的应用程序, ...

  6. 【原创】HDFS介绍

    一.            HDFS简介 1.    HDFS全称 Hadoop Distributed FileSystem,Hadoop分布式文件系统. Hadoop有一个抽象文件系统的概念,Ha ...

  7. form表单提交数据

    js代码: // form 跳转 gotourl//跳转的页面 options json格式参数 function FromGoTo(gotourl, options) { var inputhtml ...

  8. 淡蓝风格的手机登录HTML模板

    查看效果:http://hovertree.com/texiao/mobile/10/ 或者手机扫描二维码查看效果: 效果图: 代码如下: <!DOCTYPE html> <html ...

  9. html5 postMessage解决iframe跨协议跨域通信问题

    a.html有个iframe载入b.com/login.html,当login完成时通知a.html页面登录完成并传递UserName 1.a.html 监听消息 window.addEventLis ...

  10. 跨平台运行ASP.NET Core 1.0

    前言 首先提一下微软更名后的叫法: ASP.NET 5 更名为 ASP.NET Core 1.0 .NET Core 更名为 .NET Core 1.0 Entity Framework 7 更名为  ...