1. ホーム
  2. mysql

[解決済み] MySQL には命名規則がありますか?

2022-03-10 11:04:42

質問

私のやり方はこうです。

  1. テーブル名は小文字で、単語の区切りにはアンダースコアを使用し、単数形とします(例 foo , foo_bar など。
  2. 私は通常(常にではありません)、自動インクリメントのPKを持っています。私は次のような規約を使用しています。 tablename_id (例. foo_id , foo_bar_id など)。
  3. あるテーブルに外部キーとなるカラムがある場合、そのキーのカラム名を、そのカラムの元となったテーブルからコピーするだけです。たとえば、テーブル foo_bar は、FK foo_id (ここで foo_id のPKです。 foo ).
  4. 参照整合性を強制するためにFKを定義する場合、私は次のように使っています。 tablename_fk_columnname (例:例3をさらに進めると、次のようになります。 foo_bar_foo_id ). これはテーブル名とカラム名の組み合わせなので、データベース内で一意であることが保証されています。
  5. 私はこのようにカラムを並べます。PK、FK、そして残りのカラムはアルファベット順です。

もっと良い、標準的な方法はないのでしょうか?

どのように解決するのですか?

まず第一に、一貫性を保つということですね。

質問にあるような規約があれば、ほぼ問題ないと思います。しかし、2つほどコメントがあります。

1と2が良いと思います。

ポイント3 - 悲しいことに、これは常に可能とは限りません。1つのテーブルでどのように対処するか考えてみましょう。 foo_bar があり、そのカラムが foo_idanother_foo_id を参照する。 foo テーブル foo_id カラムになります。これにどう対処するか、検討した方がいいかもしれません。これはちょっとしたコーナーケースですが!

ポイント4 ポイント3と同様です。複数の参照カラムを持つことに対応するために、外部キー名の末尾に数字を導入するとよいでしょう。

ポイント5-私なら避けます。後日、テーブルのカラムを追加または削除するときに、頭痛の種になります。

その他にもいくつかポイントがあります。

インデックスの命名規則

インデックスの命名規則を導入するとよいでしょう。これは、データベースのメタデータ作業を行う際の大きな助けになります。例えば、あるインデックスを次のように呼ぶことができます。 foo_bar_idx1 または foo_idx1 - は、あなた次第ですが、検討する価値はあると思います。

列名の単数形と複数形

テーブル名と同様に、カラム名にも複数形と単一形という茨の道を選んでみてはいかがでしょうか。この問題は、しばしば 大論争 DBのコミュニティで。私なら、テーブル名、カラムともに単数形にこだわります。そこです。言ってしまいましたね。

ここで重要なのは、もちろん一貫性です