主键:
主键有2种主键的存在。一种是业务主键,一种是逻辑主键。 业务主键通常是表里有的数据作为主键使用。一般常见的就是不容易重复的数据,例如:身份证号等 逻辑主键就是本来一条数据没有这个字段,但是我们担心会出现重复数据,我们自己生成一个让此条数据成为唯一的重要字段,在一张表里很明显的主键建立方式是一个 int字段标明他 并且让他自增长(一般称为标识列) 一般主键的作用用术语说就是[实体完整性] 实体:表中的记录,一个实体就是指表中的一条记录。 实体完整性:在表中不能存在完全相同的记录,且每条记录都要具有一个非空且不重复的主键值。 使用逻辑主键另外一个优势就是他的物理性能比较好。在sql的物理存储中他是一并往下添加,和数据的排列是一致的,这样做任何操作都会比较方便、快捷。 GUID,GUID算法是一种可以产生唯一表示的高效算法,它使用网卡MAC、地址、纳秒级时间、芯片ID码等算出来的,这样保证每次生成的GUID永远不会重复,无论是同一计算机还是不同计算机。在公元3400年前产生的GUID与任何其他产生过的GUID都不相同。通常我们使用逻辑主键比较合理。 GUID如果当主键我们通常要注意,他不会像int字段那样自增长,他是随机的,所以使用GUID也会造成数据存储的物理性变差,使一张表会出现很多变动,当然事无绝对,也有方法能让GUID的排序和数据的排序一致。 Sql中的方法:newid();外键:
外键我们通常不能单独解释,我的理解是当有2个互相关联的表要组合在一起便于做各种操作的时候,外键就起到了很大的作用,也就是用术语说是[参照完整性] 当更新、删除、插入一个表中的数据时,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确。参照的完整性要求关系中不允许引用不存在的实体。参照完整性与实体完整性是关系模型必须满足的完整性约束条件。 简单的说就是表间主键外键的关系。 参照完整性则是相关联的两个表之间的约束,具体的说,就是从表中每条记录外键的值必须是主表中存在的,因此,如果在两个表之间建立了关联关系,则对一个关系进行的操作要影响到另一个表中的记录。现在有两张表,Users表有一个字段是[userId]和一个字段[carId],"username",Cars表有一个字段[carId]和[carName] ,他们之间添加了外键关联。所以如果我们想知道其中一个user的car name我们就可以使用这样的sql来查询
select u.username,c.carName from u as Users inner join c as Cars on u.carId = c.carId where u.userId = @UserId
请注意这里的 u.carId=c.carId 这样就将两张表联系上了。我们也查询到了我们想要的2张表的结果。
定义主键和外键主要是为了维护关系数据库的完整性,总结一下:
一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
二、主键、外键的区别
定义: 主键--唯一标识一条记录,不能有重复的,不允许为空 外键--表的外键是另一表的主键, 外键可以有重复的, 可以是空值作用: 主键--用来保证数据完整性 外键--用来和其他表建立联系用的
个数: 主键--主键只能有一个 外键--一个表可以有多个外键
数据库里面的键(SQL Server)
标签:
查看更多关于数据库里面的键(SQL Server)的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did160659