: .
深度解析MySQL创建关联表
•摘要:MySQL数据库中通过使用外键(foreign key)保障了参照完整 性 (Referentialintegrity),使任何与不存在记录的关联将变得无效化,从而提供更为准确和 实用的数据库。
MySQL创建关联表让我们的数据库更为准确和实用,提到 MySQL创建关联表,就不能不
提到参照完整性的概念。
参照完整性(Referentialintegrity)是数据库设计中一个重要的概念。在系统不同的列表中,当 数据库所有参照合法或非合法关联时 都会涉及到参照完整性。当参照完整性存在时,任何
与不存在记录的关联将变得无效化, 由此可防止用户出现各种错误, 从而提供更为准确和实
用的数据库。
参照完整性通常通过外键 (foreign key)的使用而被广泛应用。长久以来,流行工具开源
RDBMSMySQL并没有支持外键,原因是这种支持将会降低 RDBMS的速度和性能。然而,
由于很多用户对参照完整性的优点倍感兴趣, 最近MySQL的不同版本都通过新InnoDB列
表引擎支持外键。由此,在数据库组成的列表中保持参照完整性将变得非 常简单。
为了建立两个 MySQL表之间的一个外键关系, MySQL创建关联表必须满足以下三种情况:
*两个表必须是InnoDB表类型。
*使用在外键关系的域必须为索引型 (Index)。
*使用在外键关系的域必须与数据类型相似。
例子是理解以上要点的最好方法,新建一个 parts的表,cpu字段用来存放所有的 cpu配件
型号,再新建一个pc的表,其中的cpumodel字段用来存放pc机中的cpu型号,显然,cpumodel 字段中的所有记录应该存在于 parts表中。
1 mysql> create table parts(
2 -> cpu char(20) n ot null,
? -> in dex(cpu)
4 -> )engine=inno db;
、 Query OK, 0 rows affected ( sec)
6
mysql> create table pc(
-> cpumodel char(20) not nu II,
? -> in dex(cpumodel),
工 -> foreig n key(cpumodel) references parts(cpu)
二-> )engine=innodb;
二 Query OK, 0 rows affected ( sec)
13
注意:对于非InnoDB表,FOREIGN KEY 语句将被忽略。对 parts表添加数据1,2,3,接 着对pc表进行测试,满足条件的 1可以顺利insert进去,而不符合条件的字符 5在insert 表的时候,出现外键约束性错误,这正是我们想要的结果
mysql> in sert into parts values
MySQL创建关联表 来自淘豆网m.daumloan.com转载请标明出处.