我该如何为Django设计数据库?

时间:2012-02-26 13:14:26

标签: sql database django erd

我喜欢使用GUI应用程序来使用ERD设计数据库。目前我正在使用免费MySQLWorkbench的EER图。

一旦我喜欢ERD的外观,我转发工程师 MySQLWorkbench中的ERD来创建实际的数据库。然后我用django-admin.py inspectdb反向工程师的MySQL数据库内省到Django的models.py的Python代码段输出中。

但是我必须接受inspectdb输出并根据自己的喜好手动编辑它。我真的不喜欢的一个特殊部分是从多对多关系中手动删除每个连接表。

有专门为Django设计的优秀(并且最好免费)的GUI ERD设计程序吗?

2 个答案:

答案 0 :(得分:4)

如果您希望在数据库级别设计模型,就像您描述的那样,您将需要完全这样做:设计SQL然后将其转换为Django模型。

这不是设计Django应用程序的常规方法:通常您可以按照自己的意愿设计模型,如果需要解决一些性能问题,只需要花费大量精力进行模式设计。 Django模型实际上并不是对关系数据库的抽象:它们是对应用程序持久化对象的抽象,它恰好在关系数据库之上实现。

想要/需要做一个明确的架构设计没有什么不对,但它会让你有点异常(大多数网络开发人员没有),因此你很难找到适合你需求的工具。

最接近的是graph_models命令,它是Django command extensions的一部分。这使您可以可视化您的模型(您仍然使用python代码编写它们,但可视化表示将帮助您更快地迭代)。

答案 1 :(得分:3)

为django应用程序设计数据库布局并不常见,这样做可能会导致次优设计。

相反,只需设计模型类,考虑如何查询它们,以及ForeignKey(和其他关系类型)的工作方式。如果您不这样做,您可能会发现您的应用程序遭受概念上的不匹配。