【问题标题】:Generating SQL from an ERD - how are relations mapped into SQL?从 ERD 生成 SQL - 关系如何映射到 SQL?
【发布时间】:2015-05-19 15:40:40
【问题描述】:

我正在使用 Mysql 工作台 EER 来绘制我的 ERD。 表之间有各种关系(可选/强制,非标识/标识) 我使用正向工程来生成底层 SQL。 就关系而言,对于可选关系,它会生成一个 NULL FK 而在一个强制性的 NOT NULL FK 中,就是这样。

我的意思是它不应该也基于关系生成级联删除吗? 即,如果我有一个识别关系,那么当父级被删除时,子级也应该被删除,因此会生成级联删除

或者,换句话说,在 ERD 中建模的关系除了在概念上知道您的数据库是如何在纸上建模的之外没有实际价值? 例如,为识别强制关系生成的 sql 代码应该是什么?

【问题讨论】:

    标签: mysql database database-design mysql-workbench


    【解决方案1】:

    您所指的称为关系。在数据库管理方面,relation 是不同的。

    你的关系应该被实现为外键。外键的实用价值在于它强制引用完整性。级联删除通常不是所需的行为,并且在 SQL 中,默认的参照完整性操作是如果父表中的行在另一个表中被引用,则不允许删除该行。如果你想要级联删除,那么你必须指定它。请注意,在 MySQL 中,只有 InnoDB 数据库引擎支持引用完整性。

    【讨论】:

    • 如果 ERD 中的关系没有在底层 SQL 中使用,那么修饰它们是否有实际价值(即可选、标识等)?
    • 一般来说,我希望约束存在于底层 SQL 中。然而,“识别”关系的概念有点奇怪。识别关系(强制性)在实践中与强制性非识别关系没有区别。如果模型的用户(业务分析师?开发人员?)认为此类信息可读且有用,则将此类信息放入模型中。
    猜你喜欢
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 2010-10-24
    • 2010-12-19
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    相关资源
    最近更新 更多