1. ホーム
  2. sql

[解決済み] 主キー/外部キーの命名規則 [終了しました]。

2023-01-10 20:06:02

質問

私たちの開発グループでは、主キーと外部キーの命名規則に関して激しい論争が繰り広げられています。 基本的に、私たちのグループには2つの考え方があります。

1:

Primary Table (Employee)   
Primary Key is called ID

Foreign table (Event)  
Foreign key is called EmployeeID

または

2:

Primary Table (Employee)  
Primary Key is called EmployeeID

Foreign table (Event)  
Foreign key is called EmployeeID

私は、どの列にもテーブルの名前を重複させないことを好みます(ですから、上記のオプション1が好ましいです)。概念的には、プロパティ名にオブジェクトの名前を使わないという、他の言語での推奨プラクティスの多くと一致しています。私は、外部キーの名前を EmployeeID (または Employee_ID の方がいいかもしれません)は、読者に、それが ID の列であることを示します。 Employee テーブルの

主キーの前にテーブル名を付けて、データベース全体でカラム名が同じになるようにするオプション 2 を好む人もいます。 その点は理解できますが、これで主キーと外部キーを視覚的に区別することができなくなります。

また、テーブルをエンティティ、カラムをそのエンティティのプロパティや属性と考えると、カラム名にテーブル名を入れるのは冗長だと思いますので、ID属性として Employee ではなく EmployeeID 属性ではありません。私は同僚に彼の PersonAge または PersonGender です。彼のAgeは何かと尋ねると

ですから、私が言ったように、これは激論であり、私たちはそれについて何度も何度も行っているのです。 新しい視点を得ることに興味があるのです。

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

それは本当に重要ではありません。 選択肢1と選択肢2の間に本当に差があるようなシステムには遭遇したことがないのです。

Jeff Atwoodはこのトピックについて、しばらく前に素晴らしい記事を書いています。 基本的に、人々は、自分が間違っていることを証明できないトピックについて、最も激しく議論し、主張します。

1 つ選んで、あなたのコードに実際に影響を与える問題に集中するように言ってください。

編集: 楽しみたいなら、その方法が再帰的なテーブル参照に対して優れている理由を長々と説明させましょう。