
我最近打算使用 mysql 设计一个软件,数据库用来存放一些历史数据,需要设计一些数据库的表格。
我在网上看到有一些工具,设计不同的表之后,表和表之间的外键连接会通过箭头连接的方式显示在 gui 界面里面。
同时能生成 sql 的语句来创建这些表,请问有这样的工具么?在线的或者离线的都可以推荐,最好是免费可以使用的,谢谢!
1 teli Aug 13, 2023 不建议添加外键 |
2 ruochen666 Aug 13, 2023 powerdesigner |
3 balancircle Aug 13, 2023 PDMan http://www.pdman.cn/ |
4 wusheng0 Aug 13, 2023 via Android |
5 wusheng0 Aug 13, 2023 via Android |
6 taotaodaddy Aug 13, 2023 navicat 较新版本有带连线和箭头的设计工具 |
7 565656 Aug 13, 2023 jb 全家桶里好像有个 |
8 lujiaxing Aug 13, 2023 PowerDesigner 就可以. 你要是觉得 PD 比较古老你可以试试 Navicat. 也有这种功能. |
10 loading Aug 13, 2023 |
11 akira Aug 13, 2023 外键,触发器这些东西,用的时候是爽了,出问题的时候,排查起来头大的要命 |
12 gdb OP 我是一个初学者,楼上好几个人都说不要使用外键,但我觉得很奇怪,如果不使用外键的话,这个关系型数据库如何进行表和表之间的关联呢? |
13 AEDaydreamer Aug 13, 2023 用逻辑外键,非物理外键。 |
14 ktqFDx9m2Bvfq3y4 Aug 13, 2023 via iPhone |
15 charlie21 Aug 13, 2023 via iPhone 外键、索引、约束 ( constraint ,删掉一行数据时候会提示无法删除因为有约束存在),三者关系是什么? 如果一个约束是为了在 “误删”数据之时丢出报错,那么在无外键的情况下还有一个约束吗? |
16 loading Aug 13, 2023 @charlie21 #15 现在都是逻辑删除,不是真删除。 逻辑删除无论是性能还是防误操作,都更优。 逻辑删除一般就是有个 delete_time 一类的字段默认 null ,not null 就是已经删除了。 |
17 iseki Aug 13, 2023 @loading 阅读了下这篇文章,结论基本可以从不使用外键修改为不使用 MySQL 。 至于文章中讨论的,数据删除导致大量写入,这就是需求本身所要求的,无论你用不用外键,数据删除是一定要删的。 至于 #16 提及的,所谓软删除,是彻彻底底的反模式,基本可以视为概念不清导致的混乱设计,可以查看[这个链接]( https://twitter.com/haoel/status/1440633425279389707)。 @gdb 你需要的是 ERD 软件,Navicat 和 MySQL 自带的 MyQL Workbench 可以满足这个需求 |
18 iseki Aug 13, 2023 |
19 loading Aug 13, 2023 |
20 iseki Aug 13, 2023 |
21 iseki Aug 13, 2023 至于针对性能的讨论,这个可能就要 case by case 地分析和论证了 |
22 Rache1 Aug 13, 2023 Jetbrains 的 DataGrip 生成的图会自动考虑你表名(复数、单数)和字段名之间的关系,来生成 “箭头”,不依赖外键。 比如: users 表有用户 id ,posts 表有 user_id ,那就会自动把 posts 表和 users 表关联起来。 再比如,categories 表和 products 表有一个关系表,分别有 category_id 和 product_id ,DataGrip 也能帮你自动连起来。 也就是说,只要你表名称是复数的,字段名字是单数 + id 的形式,他就可以自动推断出来。 |
25 qsnow6 Aug 14, 2023 用就完事,国外的社区主流的观点都是应用尽用。 不然搞 ORM 搞啥。 |
26 a33291 Aug 14, 2023 曾经有一个项目必须走边界摆渡数据到内网,然后边界摆渡时,如果有外键则经常导致数据错乱,没办法只能删掉外键 |
27 kinXdle Aug 14, 2023 不用外键是因为没有 dba 啊 |
28 cyrivlclth Aug 14, 2023 via iPhone 没想到外键警察也出现了....都魔怔了 |
29 cyrivlclth Aug 14, 2023 via iPhone 我喜欢用 plantuml 来画 如果不想折腾 navicat 之类的 当然记得导出的时候去除外键 |
30 YinHeWL Aug 14, 2023 用 MySQL 不用外键的,真令人无语 |
32 lzgshsj Aug 14, 2023 PlanetScale 直接就是明确不支持外键的,在这篇文章有提到原因 https://planetscale.com/docs/learn/operating-without-foreign-key-constraints |
33 sorcerer Aug 14, 2023 via Android pdman |
34 gdb OP 各位楼上的,你们说的 pdman 是国产软件,是这个么?现在似乎改名为 pdmaner 了? PDManer Releases - Gitee https://gitee.com/robergroup/pdmaner/releases |
35 cl472903345 Nov 12, 2024 mac store 搜索 ER Designer ,看看小弟写的 |