MySQL数据库中应当如何建立外键

MySQL数据库中应当如何建立外键,第1张

drop table cotton; create table cotton( id int primary key, user varchar(11), email varchar(11), url varchar(11), content varchar(11), addTime date, biao_id int, constraint FK_biao_id foreign key (blog_id) references biao(id) )ENGINE=InnoDB DEFAULT CHARSET=gb2312; (注释:一定要记住varchar(11),否则可能就会出现错误,从已有表导出sql才看以出)。 此sql语句用sql-front导出后的结果是: DROP TABLE IF EXISTS `comment`; CREATE TABLE `comment` ( `id` int(11) NOT NULL, `user` varchar(11) default NULL, `email` varchar(11) default NULL, `url` varchar(11) default NULL, `content` varchar(11) default NULL, `addTime` date default NULL, `blog_id` int(11) default NULL, PRIMARY KEY (`id`), KEY `FK_blog_id` (`blog_id`) ) ENGINE=InnoDB DEFAULT CHARSET=gb2312; ALTER TABLE `comment` ADD FOREIGN KEY (`blog_id`) REFERENCES `blog` (`id`); 推荐人评论 实例讲解Mysql数据库中应当如何建立外键,值得参阅。

不建议建立,使用外键有利于维持数据完整性和一致性,但是对于开发来说是非常不利的。 每次做DELETE 或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦,而且需要更为复杂的错误捕获机制。做数据处理时会受到很多的束缚,有些地方本来就可以允许有部分冗余,但是由于设计了外键约束,只能放弃。出现BUG的时候追踪很麻烦。 总的来说,自己来掌握数据总比别人去掌握要方便。目前我们公司的所有软件都很少用到外键约束,基本都是由程序控制一致性和唯一性。

创建数据库时就是有主键的创建了主键,但是表之间的关系没有联系,要建数据库关系图只有主键没有外键时不行的。

建外键的前提是此外键必须是另外一个表的主键。建外键的步骤:

第一步、打开要建外键表的设计器,右击选择“关系”。

第二步、然后d出“外键关系”窗体,我们选择“添加”,然后点击“表和列规范”后面的小按钮。

第三步、d出另外一个窗体让我们选择主键表和列,记住要选择相同的,选好之后点击确定。

第四步、展开INSERT和UPDATE规范,在更新规则和删除规则有四个选项,分别是“不执行任何 *** 作”、“级联”、“设置为NULL”、“设置默认值”。

默认的不执行任何 *** 作。如果是“不执行任何 *** 作”,当我们删除或更新主键表的数据时,会告诉用户不能执行删除或更新该 *** 作。

“级联”的意思是当我们删除或更新主键表的数据时,会删除或更新外键表中所涉及的相关数据的所有行。

“设置Null”的意思是当我们删除或更新主键表的数据时,外键表中的外键列的值会设为Null,但前提是该列允许为空。

“设置默认值”的意思是如果我们将外键列定义了默认值,当我们删除或更新主键表的数据时,外键表中的外键列的值设为定义的默认值。

当然也可以用代码创建,在创建数据库表T——Card时只要加上一句代码就可以了。“Foreign key (studentNo) references T_Student(studentNo)"。如果已经创建了改表,那如何用代码实现了,这也很简单也就一句代码“ add constraint CMPKey(外键名) foreign key(studentNo) references T_Student(studentNo)”。

不必须,可以了解一下外键的作用

外键的设计初衷是为了在数据库端保证对逻辑上相关联的表数据在 *** 作上的一致性与完整性。

优点:

精简关联数据,减少数据冗余

避免后期对大量冗余处理的额外运维 *** 作。

降低应用代码复杂性,减少了额外的异常处理

相关数据管理全由数据库端处理。

增加文档的可读性

特别是在表设计开始,绘制 ER 图的时候,逻辑简单明了,可读性非常强。

缺点:

性能压力

外键一般会存在级联功能,级联更新,级联删除等等。在海量数据场景,造成很大的性能压力。比如插入一条新记录,如果插入记录的表有 10 个外键,那势必要对关联的 10 张表逐一检查插入的记录是否合理,延误了正常插入的记录时间。并且父表的更新会连带子表加上相关的锁。

其他功能的灵活性不佳

比如,表结构的更新等。

1,创建表的时候添加:foreign key (你的外键) references (表名)(字段名); 2,创建好之后修改: alter table dbomh_User add constraint FK_mh_User__id foreign key (你的外键) references (表名)(字段名);

以上就是关于MySQL数据库中应当如何建立外键全部的内容,包括:MySQL数据库中应当如何建立外键、设计数据库表的时候, 适不适合在数据库中建立主外键关系、sql怎么设置外键等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10182335.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存