mysql怎么设置外键
外键的设计初衷是为了在数据库端保证对逻辑上相关联的表数据在操作上的一致性与完整性。
优点:
精简关联数据,减少数据冗余避免后期对大量冗余处理的额外运维操作。
降低应用代码复杂性,减少了额外的异常处理相关数据管理全由数据库端处理。
增加文档的可读性特别是在表设计开始,绘制 ER 图的时候,逻辑简单明了,可读性非常强。
缺点:
性能压力外键一般会存在级联功能,级联更新,级联删除等等。在海量数据场景,造成很大的性能压力。比如插入一条新记录,如果插入记录的表有 10 个外键,那势必要对关联的 10 张表逐一检查插入的记录是否合理,延误了正常插入的记录时间。并且父表的更新会连带子表加上相关的锁。
其他功能的灵活性不佳比如,表结构的更新等。
外键参照动作列表:
CASCADE:级联,子表跟随父表更新外键值
SET NULL:子表更随主表更新外键值为 NULL
RESTRICT/ NO ACTION:默认,限制父表改动外键值
SET DEFAULT:目前产生的效果和 RESTRICT 相同。
mysql外键的优缺点
外键作为关系数据库中的重要概念,具有一定的优缺点。其优点在于可以帮助确保数据完整性和一致性,通过强制关联和约束,防止意外或错误地更改或删除相关数据,提高数据库的可靠性和稳定性。
然而,外键也可能导致性能下降,特别是在大型数据库中,需要谨慎设计和使用,避免不必要的关联和约束,以提高查询和操作效率。因此,合理使用外键可以带来诸多好处,但需注意在实际应用中的性能影响。
MySQL不用外键的话,如何让表起来关联
表的关联,只是一种逻辑概念,本并不需要进行物理上的“硬绑定”,而且你所期望的关联,只是其数据上存在一定的联系而已,这种联系实际上是设计之初就定义好的固有逻辑。
所以在业务代码中实现的时候,只要按照设计之初的这种固有关联逻辑来“存/取”数据即可,并不需要在数据库层面进行“硬绑定”
因为在数据库层面通过使用外键的方式进行“硬绑定”,会带来很多额外的资源消耗来进行一致性和完整性校验,即使很多时候我们并不需要这个校验。
所以一般不建议在数据库中使用外键约束来保证数据的一致性和完整性。
mysql用外键以后怎么修改字段名
要修改MySQL中具有外键约束的字段名,需要按照以下步骤进行操作:
1. 首先,使用`SHOW CREATE TABLE`语句查看表的创建语句,找到包含外键约束的字段名。
2. 使用`ALTER TABLE`语句删除外键约束。例如,使用`ALTER TABLE 表名 DROP FOREIGN KEY 外键名`来删除外键约束。
3. 使用`ALTER TABLE`语句修改字段名。例如,使用`ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型`来修改字段名。
4. 如果需要,可以使用`ALTER TABLE`语句重新添加外键约束。例如,使用`ALTER TABLE 表名 ADD CONSTRNT 外键名 FOREIGN KEY (字段名) REFERENCES 关联表名(关联字段名)`来添加外键约束。
请注意,在修改字段名后,还需要确保更新相关的查询和代码,以反映新的字段名。此外,修改字段名可能会影响数据库中的其他依赖项,因此在进行此操作之前,请务必备份数据库以防万一。
还没有评论,来说两句吧...