web-dev-qa-db-ja.com

MySQLに命名規則はありますか?

以下にその方法を示します。

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

これを行うためのより良い、より標準的な方法はありますか?

138

何よりもまず、一貫性を保つことです。

私は、あなたがあなたの質問で概説した慣習をほとんど持っていると思います。ただし、いくつかのコメント:

ポイント1と2は良いと思います。

ポイント3-悲しいことに、これは常に可能ではありません。列foo_barおよびfoo_idがあり、どちらもfooテーブルanother_foo_id列を参照する単一のテーブルfoo_idをどのように処理するかを考えてください。これに対処する方法を検討する必要があります。しかし、これはちょっとしたケースです!

ポイント4-ポイント3と同様。複数の参照列がある場合に対応するために、外部キー名の最後に数字を導入することができます。

ポイント5-私はこれを避けます。それはあなたに少しを提供し、後日テーブルに列を追加したり削除したりするときに頭痛になります。

その他のポイントは次のとおりです。

インデックスの命名規則

インデックスの命名規則を導入することをお勧めします-これは、実行したいデータベースメタデータの作業に非常に役立ちます。たとえば、インデックスfoo_bar_idx1またはfoo_idx1を呼び出すだけでよい場合があります-完全にあなた次第ですが、検討する価値があります。

特異列名と複数列名

列名とテーブル名の複数対単一という厄介な問題に対処することをお勧めします。この主題は、多くの場合、DBコミュニティで 大きな議論 を引き起こします。テーブル名と列の両方に単数形を使用します。そこ。私はそれを言った。

ここでの主なことはもちろん一貫性です!

93
Tom Mac

一貫性は、あらゆる命名標準の鍵です。それが論理的で一貫している限り、99%そこにいます。

標準自体は非常に個人的な好みであるため、標準が気に入った場合はそれを実行します。

あなたの質問に完全に答えるために-いいえ、MySQLには好ましい命名規則/標準がありません。

19
mal-wan

MySQLには、多少厳密なルールの簡単な説明があります。

https://dev.mysql.com/doc/internals/en/coding-style.html

Simon HolywellによるMySQLの最も一般的なコーディングスタイル:

http://www.sqlstyle.guide/

この質問も参照してください: SQLの公開されたコーディングスタイルのガイドラインはありますか?

7
Daniel W.

ありがたいことに、PHP開発者は、私が知っている一部の開発コミュニティのような「キャメルケースビゴ」ではありません。

あなたの慣習はうまく聞こえます。

A)シンプルで、b)一貫性がある限り、問題は見られません:)

PS:個人的には、5)はやりすぎだと思う...

4
paulsm4