Rails 4モデルでは、従業員と部門の関係をモデル化したいと考えています。ある従業員が属しており、ある部門がdepartment_many従業員である。外部キーにすることなくemployeeテーブルにdepartment_id参照を作成できますか?Rails:外部キーを使用しない列参照の作成
これは、私が使用しているデータベースであるMySQLのレコードロック動作に影響を与え、複数のスレッドから同時に更新を実行するとランダムエラーが発生する可能性があるからですRailsアプリケーション。
Rails 4モデルでは、従業員と部門の関係をモデル化したいと考えています。ある従業員が属しており、ある部門がdepartment_many従業員である。外部キーにすることなくemployeeテーブルにdepartment_id参照を作成できますか?Rails:外部キーを使用しない列参照の作成
これは、私が使用しているデータベースであるMySQLのレコードロック動作に影響を与え、複数のスレッドから同時に更新を実行するとランダムエラーが発生する可能性があるからですRailsアプリケーション。
はいできます。 Rails 4.2を使用していて、マイグレーション内でreferences
またはadd_reference
を使用している場合は、:foreign_key
オプションをfalseに設定してください。
@ user1063998で説明されているアプローチを採用し、department_id
という整数列をemployeesテーブルに追加することもできますが、その場合はこの列のインデックスも追加することをお勧めします。
デフォルトでは、Railsはデータベースレベルで外部キー制約を追加しません。
移行を使用すると、department_id
という従業員表に単純に整数列を追加できます。外部キー制約の動作を模倣する必要がある場合は、モデルで検証を使用できます。