Chinaunix首页 | 论坛 | 博客
  • 博客访问: 384908
  • 博文数量: 102
  • 博客积分: 1395
  • 博客等级: 中尉
  • 技术积分: 1050
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-05 18:09
文章分类

全部博文(102)

文章存档

2013年(25)

2012年(77)

分类: Mysql/postgreSQL

2012-12-07 20:31:40

超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键
候选键(candidate key):不含有多余属性的超键称为候选键
主键(primary key):用户选作元组标识的一个候选键程序主键

比如一个小范围的所有人,没有重名的,考虑以下属性

身份证  姓名  性别 年龄

身份证唯一,所以是一个超键
姓名唯一,所以是一个超键
(姓名,性别)唯一,所以是一个超键
(姓名,性别,年龄)唯一,所以是一个超键
--这里可以看出,超键的组合是唯一的,但可能不是最小唯一的

身份证唯一,而且没有多余属性,所以是一个候选键
姓名唯一,而且没有多余属性,所以是一个候选键
--这里可以看出,候选键是没有多余属性的超键

考虑输入查询方便性,可以选择 身份证 为主键
也可以 考虑习惯 选择 姓名 为主键
--主键是选中的一个候选键



1 主键
主键的任务就是帮助MYSQL以最快的速度把一条特定的数据记录在数据库表里面的位置给确定下来。其主要的目的是标记一条记录,从而提高获取数据的速度。
1)主键必须是唯一的,任意两条数据记录里的主键指端决不允许有相同的内容。
2)主键应该尽可能紧凑。这样能加快MYSQL检索数据的速度。

2. 外键
外键是 引用另一个数据表的记录这样一个标记两个表之间关系的符号。它主要的作用是确保数据表中数据的完整性。保持各种数据相互的一致性。
创建一个带有外键的表:
create table titles(
column1 ,
column2 ,
....  ,
publicid int ,
foreign key(publicid) references othertable(otherkey) 
[on delete [cascade | set null | no action | restrict]]
[on update [cascade | set null | no action | restrict]]
)engine = innodb;

以上的几种处理方式的介绍:
1) restrict : 不允许此操作,MYSQL抛出错误
2) set bull : 相关字段全部设置为空
3) cascade : 相关字段联级删除
4) no action : 不采取任何动作

删除一个外键:
alter table tablename drop foreign key publicid;

1.       超键(Super Key):在关系中能惟一标识元组的属性集称为关系模式的超键。
2.       候选键(Candidate Key):不含有多余属性的超键称为候选键。也就是在候选键中,若要再删除属性,就不是键了。
3.       主键:(Primary Key):用户选作元组标识的一个侯选键称为主键。一般,如不加说明,则键是指主键。



例如一个表id,name,***,age四个字段,也就是四个属性
其中id,name是能唯一标识一列的字段集,也就是属性集
1.    超键(Super Key):在关系中能惟一标识元组的属性集称为关系模式的超键。
id,name,***,age,是超键,id,name,***或者id,name,age也是超键,就是必须包含候选键所包含属性的属性集
2.    候选键(Candidate Key):不含有多余属性的超键称为候选键。也就是在候选键中,若要再删除属性,就不是键了。
id,name是候选键,因为删除了哪一个属性,都不能唯一标识一个元祖
3.    主键:(Primary Key):用户选作元组标识的一个侯选键称为主键。一般,如不加说明,则键是指主键。
如果你选择一个候选键作为标识,这个候选键就称为主键,比如说上面的表里还有个字段叫no,代表你的学号,那么no就也是一个候选键,但你没用它做主键。
阅读(3474) | 评论(0) | 转发(0) |
0

上一篇:ARM的地址模式

下一篇:Mysql建表要求

给主人留下些什么吧!~~