学习数据库的过程中设计大量的概念,其中又会有很多概念表达同样的东西。本文收录数据库一些核心概念,方便数据库的学习。
records=rows=tuples
它们表达了同一个东西,就是一个表(table)的一行
Fields=Columns=Attributes
它们表达了同一个东西,就是一个表(table)的一列
ERD
ERD,Entity Relationship Diagram,用于表示很多张表(table)及它们之间的关系
primary key
主键,用于区别同一张表中的不同记录(record,row或者tuple),也被用于定义不同的表之间的关系。primary key不能为NULL值(为NULL还怎么确保记录的唯一性?)
unique key
对不同的记录(record,row或者tuple) unique key也是唯一的。unique key不是主键,和主键可以定义不同表之间的关系不同,unique key用于表内查询记录时提高性能。
foreign key
把一张表中的primary key拷贝到另一张表中,那么另一张表中的拷贝值就是foreign key。比如有2种表author和publication,author中primary key是author_id,现将author_id拷贝进入表publication中,成为publication的一个field,那么publication中的author_id对于表publication来说就是一个foreign key,用于指向表author,确立这2张表的关系。注意,foreign key可以为NULL值
parent table
一张表A的primary key出现在另一张表P中作为foreign key,那么可以说表A是表P的parent table
child table
一张表A的primary key出现在另一张表P中作为foreign key,那么可以说表P是表A的child table
cascade
当修改了parent table中的primary key时,这种改变必须被映射(cascade)到相关的全部child table的foreign key.当修改child table中的foreign key为NULL时,不必检查primary key是否存在;如果修改child table中的foreign key为非NULL的值,必须先检查相关parent table中的primary key是否存在。如果删除parent table中的一条记录(record),和父表primary key对应的子表中的foreign key对应的记录也必须删除。
参考
- Beginning Database Design, by Gavin Powell
网友评论