【问题标题】:MySQL WorkBench Enchanced Entity Relationships with Rails RelationshipsMySQL WorkBench 增强的实体关系与 Rails 关系
【发布时间】:2014-05-08 01:01:43
【问题描述】:

我的任务是创建一个正在开发中的当前 Rails Web 应用程序的数据库图。我已经在 rails 应用程序中创建了几个关系。

  belongs_to :company

  has_many :users

我使用了 MySQL Workbench EER 图工具。当我拉入 Company 表和 User 表时,MySQL 不明白这两个表之间存在关系。

  1. 我想知道 MySQL 未创建关系是否会影响性能。

  2. 在 Rails 中生成迁移时,有没有办法在 MySQL 中创建这种关系?

【问题讨论】:

  • 你看过 gem Rails-ERD (rails-erd.rubyforge.org) 吗?这会有所帮助。
  • 不知道。它确实完成了我遇到的问题。对第 1 点和第 2 点有什么想法吗?
  • Re 1,它主要是驱动性能的指标,并且可以在 Rails 迁移中指定。 Rails 在其迁移中创建外键,就像您直接创建的一样(查看生成的 SQL),所以我怀疑您是否会看到以这种方式使用 Rails 的成本,只要您指定了索引。
  • Re 2,“ruby 方式”是将逻辑全部移动到模型中,并且在 MySQL 中本身不做任何事情。没有 null 限制等,而是让 Ruby 指定。这样做有很好且合乎逻辑的理由(例如,没有跨层指定行为,而是封装在模型中),但如果您有使用旧语言或 DBA 的经验,确实需要一些时间来适应

标签: mysql ruby-on-rails associations entity-relationship


【解决方案1】:

要解决您当前创建数据库图表的任务,您可以使用 rdnewman 建议的 Rails gem。只需按照以下链接上的步骤操作:

http://rails-erd.rubyforge.org/install.html

回答你的另外两个问题:

  1. MySQL 没有问题。问题是 MySQL Workbench 需要外键来创建表之间的关系。您可以自己执行此操作,例如,将 Post 模型中的 user_id 属性设置为 posts 表中的外键。 Rails ERD 所做的是它加载您的 Active Record 模型并处理它们的所有属性和关联(has_one、has_many、belongs_to 等),并将它们组合成一个图表。

  2. 为了在 MySQL 中显示这种关系,您需要在模型上创建 foreign_keys。但是,Rails 的默认行为是用于保存模型上的外键的列是关联的名称,并添加了后缀 _id。 :foreign_key 选项让您可以直接设置外键的名称。

您可以在此Association Basics Guide for Rails 上找到更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 2018-06-22
    • 2023-03-12
    • 2014-11-30
    • 1970-01-01
    相关资源
    最近更新 更多