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