Open2

テーブルのリレーションに意味のある識別子を使わないほうがいい理由

ryohma0510ryohma0510

その識別子の登録を間違った時に修正することが困難

products

  • id
  • code

product_settings

  • id
  • product_code

例えばこのようなリレーションが貼られているとします。

この時にproducts.codeの登録を一旦間違えてしまうとリレーション先のテーブルも間違えてしまうので、一度本番稼働してしまうと修正が困難になってしまいます。

そのためUUIDやオートインクリメントの IDのように意味のない値でリレーションを貼っておくほうが良いです

ryohma0510ryohma0510

環境で値が同じなので作業ミスにより障害が発生しやすい

意味のある値をリレーションに使っていると、環境で値が一緒なので作業環境を間違ってしまうとそのままスクリプトが実行されたりしてしまいます。

自動採番された意味のない識別子ならSELECTを打った時にデータが取得できずに空振りなどして気づくので安全です

補足

逆に環境で同じスクリプトを使いましたいならスクリプト側を工夫するのが良さそう