问题引发:
假设现在有 表A 和 表B(A和B分别为表名),具体设计如下:
其中,表B的 aid 是外键,关联表A的aid主键,如下设置外键:
如何设置外键的操作链接:https://blog.csdn.net/qq_43604667/article/details/104183134
理想中生成的ER图应为(也就是那条红线,表示表A和表B直接的关系):
实际中生成的ER图如下:
解决:
发现把表名改为小写之后就出现了表与表直接的关系,如下:
理由:
上网找,说是因为 MYSQL 数据库大小写敏感的问题:
查看数据库大小写敏感设置的语句:
show variables like 'lower_case_table_names';
该查询取值及含义:
0:表名按照指定的大小写存储,查找的时候区分大小写;
1:表名存储小写,查找的时候都转成小写查找(即不区分大小写);
2:表名按照指定的大小写存储,查找的时候都转成小写查找;
默认:
linux默认值0,Windows 默认为1,阿里云RDS 默认为1
我查询出来的也是1,也就是不区分大小写,但 navicat 自动生成的 ER 图并不显示关系。
我也没有尝试去修改这个数值,因为有的博文说修改不上。
参考文章:
https://blog.csdn.net/liumiaocn/article/details/89473302
https://blog.csdn.net/liyongbing1122/article/details/99625529
https://blog.csdn.net/oak_javaLearner/article/details/103882555
我现在体会到的生成外键的好处,可能除了外键关系清晰,还有就是点击ER图的线时,会弹出相对应的关系吧。