这两天在开发一个资讯设备申请管理系统,我在设计数据库的时候遇到一个比较纠结的问题,那就是关于外键的定义的问题,因为我不知道哪些字段需要定义为外键,在什么样的情况下才定义外键,还有外键的定义方法,
今天我拿到之前买的一本杨中科老师写的<<程序员的SQL金典>>研究了一下,终于解开了我的迷惑,所以以此来分享我所理解的外键.
一,外键的定义:将两种数据库表通过字段关联起来的方式就被称为"表关联",其中关联到其他表主键的字段被称为"外键".
二,外键的定义原则:一句话,当某个字段的值在表中重复出现的时候,我们就要考虑将它们提取到另外一张表中,然后在源表中引用新创建的表中的数据.
三,外键的定义方法:foreign key (外键字段名称) references 目标表名 (被关联的字段名称)
例如:create table T_Employee (FId int,FNumber varchar(50),FName varchar(50),FDepartmentId varchar(50),foreign key (FDepartmentId) references T_Department (FId))
四,如果在创建表的时候没有添加外键约束,可以使用alter table语句添加外键约束,语法如下:
alter table 表名 add constraint 外键名 foreign key (外键字段名称) references 目标表名 (被关联的字段名称)
例如:alter table T_Book add constraint fk_book_author foreign key (FAuthorId) references T_Author (FId);
技巧:关于操作数据库和写SQL语句时候的一些约定规范(或者称为一些好的习惯),这样可以避免与系统的关键字,标识符等冲突,增加程序的正确性,同时也利于维护.
1,数据库名以"db_"开头.
2,数据表名以"T_"开头.
3,字段名以"F"开头.
db(DataBase),T(table),F(Field)