请问谁能推荐一个数据库建表的设计工具,类似于 GUI 的那种,表和表之间会自动加一些箭头

2023-08-13 12:07:01 +08:00
 gdb

我最近打算使用 mysql 设计一个软件,数据库用来存放一些历史数据,需要设计一些数据库的表格。

我在网上看到有一些工具,设计不同的表之后,表和表之间的外键连接会通过箭头连接的方式显示在 gui 界面里面。

同时能生成 sql 的语句来创建这些表,请问有这样的工具么?在线的或者离线的都可以推荐,最好是免费可以使用的,谢谢!

3921 次点击
所在节点    MySQL
34 条回复
teli
2023-08-13 12:11:59 +08:00
不建议添加外键
ruochen666
2023-08-13 12:20:06 +08:00
powerdesigner
balancircle
2023-08-13 13:02:03 +08:00
wusheng0
2023-08-13 13:05:07 +08:00
wusheng0
2023-08-13 13:05:53 +08:00
taotaodaddy
2023-08-13 14:02:04 +08:00
navicat 较新版本有带连线和箭头的设计工具
565656
2023-08-13 14:03:32 +08:00
jb 全家桶里好像有个
lujiaxing
2023-08-13 14:43:58 +08:00
PowerDesigner 就可以.
你要是觉得 PD 比较古老你可以试试 Navicat. 也有这种功能.
lujiaxing
2023-08-13 14:44:12 +08:00
@teli 为什么不建议
loading
2023-08-13 15:23:29 +08:00
《为什么数据库不应该使用外键》

https://draveness.me/whys-the-design-database-foreign-key/
akira
2023-08-13 15:54:47 +08:00
外键,触发器这些东西,用的时候是爽了,出问题的时候,排查起来头大的要命
gdb
2023-08-13 16:16:41 +08:00
我是一个初学者,楼上好几个人都说不要使用外键,但我觉得很奇怪,如果不使用外键的话,这个关系型数据库如何进行表和表之间的关联呢?
AEDaydreamer
2023-08-13 16:24:17 +08:00
用逻辑外键,非物理外键。
Chad0000
2023-08-13 16:38:13 +08:00
@gdb
数据库知道地越少,压力就越小。

表之间没有关联会阻止你关联查询数据么?
charlie21
2023-08-13 16:42:32 +08:00
外键、索引、约束 ( constraint ,删掉一行数据时候会提示无法删除因为有约束存在),三者关系是什么?

如果一个约束是为了在 “误删”数据之时丢出报错,那么在无外键的情况下还有一个约束吗?
loading
2023-08-13 16:56:35 +08:00
@charlie21 #15 现在都是逻辑删除,不是真删除。
逻辑删除无论是性能还是防误操作,都更优。

逻辑删除一般就是有个 delete_time 一类的字段默认 null ,not null 就是已经删除了。
iseki
2023-08-13 17:14:22 +08:00
@loading 阅读了下这篇文章,结论基本可以从不使用外键修改为不使用 MySQL 。
至于文章中讨论的,数据删除导致大量写入,这就是需求本身所要求的,无论你用不用外键,数据删除是一定要删的。
至于 #16 提及的,所谓软删除,是彻彻底底的反模式,基本可以视为概念不清导致的混乱设计,可以查看[这个链接]( https://twitter.com/haoel/status/1440633425279389707)。

@gdb 你需要的是 ERD 软件,Navicat 和 MySQL 自带的 MySQL Workbench 可以满足这个需求
iseki
2023-08-13 17:15:05 +08:00
loading
2023-08-13 17:26:22 +08:00
@iseki #17 数据库传统模式和现在的访问量需求和读写差异问题几乎是矛盾的,特别是范式。

软删除很多时候不是防止误删除,还有其他产品上某些功能和体验上的需求,不只从 DB 方面考虑了。
iseki
2023-08-13 17:31:25 +08:00
@loading 链接中有讲到,如果产品和功能上有要求,那显然就不该是简单的删除。该是什么就叫什么,是隐藏就是隐藏,是禁用就是禁用,而不是一个笼统的删除。

@loading 这里我不愿意提及 MySQL 的各种问题。单论你说的外键导致的级联删除,这一点不是不用外键就可以规避的。
此外,数据库的外键可以极大程度保证数据的一致性。我所见很多程序员,高喊着不用外键,然后写出完全不考虑异常状态下一致性和完整性的代码,不一定是他们不愿意考虑,也有时是他们想不明白。这种情况下,数据库的实现要远远比应用自己实现的更可靠,成本更低。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.fyfyfm.apispeedy.workers.dev/t/964853

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX