- PR -

主キー、外部キーの命名どうしてますか?

1
投票結果総投票数:28
テーブル名に関係なくid など固定の名称 2 7.14%
table名+id 3 10.71%
主キーなんかつけない 0 0.00%
その他 23 82.14%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2008-02-18 15:41
こんにちは

最近いろいろな案件をメインテナンスする機会が多いのですが、
ベンダーによってさまざまな命名規約があるようで...

気になったので皆さんの意見をお聞かせください。
皆さんはどんな命名規約でテーブル定義を作成しているのでしょうか?

最近良く見かけるのは以下のような命名規約です。
(cakePHPの規約らしいです。)
・テーブル名は複数形 ("Users")など
・主キーは("id" 固定)
・外部キーは(table名単数形+"_id")
OakBow
ベテラン
会議室デビュー日: 2007/09/15
投稿数: 51
投稿日時: 2008-02-19 01:25
それはジョー・セルコ氏が提案してた命名規則かも。
声高々に提唱してる訳じゃなさそうですが。

「プログラマのためのSQL」とか書いてる方です。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2008-02-19 07:54
引用:

・テーブル名は複数形 ("Users")など
・主キーは("id" 固定)
・外部キーは(table名単数形+"_id")


どれもERやDOAの考え方からするとびっくりするような命名法です。
主キーは主キーをつけるためにわざわざつけるものではなく、正規化の段階で
自然と導出されてゆくものです。
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2008-02-19 11:02
大方予想していましたが、その他が一番多いですね。

引用:

OakBowさんの書き込み (2008-02-19 01:25) より:
それはジョー・セルコ氏が提案してた命名規則かも。
声高々に提唱してる訳じゃなさそうですが。

「プログラマのためのSQL」とか書いてる方です。


見かけたら読んでみます。

引用:

Anthyhimeさんの書き込み (2008-02-19 07:54) より:
どれもERやDOAの考え方からするとびっくりするような命名法です。
主キーは主キーをつけるためにわざわざつけるものではなく、正規化の段階で
自然と導出されてゆくものです。


それが自然ですよね。

私が以前勤めていた会社の社内ルールでは
テーブル名は 省略形2文字+(MST/TRN/TBL)
(例: 得意先マスタ TKMST, 売り上げトランザクション URTRN, 雑テーブル ZTTBL)
フィールド名は テーブル名プリフックス+省略形4文字+フィールド型サフィックス
(例: 得意先テーブル.担当者名 TKTANTNM, 売り上げテーブル.登録日: URTORKDT)
などとなっていました。

DBで仕事をしたのがその会社でしたので、今でも少なからず影響を受けていて
個人用のツールをさっさと作るときは正規化とかはあまり考えず、このルールを
使って作ったりしてます。
最初に触ったことで、一番記憶に残っていて、一番慣れているからですね。

このDBでは主キーは存在していませんでしたので、メンテナンスのときなどに
行を一意に決めるために複数のフィールドを指定しなければならず、苦労しました。

マスタ系は主キーではないけど、ユニークな値をつけるルールがあったので
よかったのですが...
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2008-02-19 12:31
引用:

末記人さんの書き込み (2008-02-18 15:41) より:
最近良く見かけるのは以下のような命名規約です。
(cakePHPの規約らしいです。)
・テーブル名は複数形 ("Users")など
・主キーは("id" 固定)
・外部キーは(table名単数形+"_id")


これは初めて見る規約で良くはしりませんが、ぱっと見で気づくのは、複合主キーができませんよね。常にオートナンバーのような人為キーを付けることを前提としているのでしょうか?O/Rマッピング向きの規則のような感じもします。
カーニー
ぬし
会議室デビュー日: 2003/09/04
投稿数: 358
お住まい・勤務地: 東京
投稿日時: 2008-02-20 22:36
以前にこんな議論をしたのを思い出しました。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37978&forum=3&17

結局、とりあえず次のようなルールを決めて設計してます。
・テーブル名は単数形
・主キーは常に人工キーで、列名は"id"
・外部キーは"<テーブル名>_id"
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-02-21 09:24
はじめて書いてみました。

私もカーニーさんとほぼ同じでidをキー(Guidを多く使います)にします。
特に意識(メリット)することは
 ・レプリケーション、インポートが楽
 ・セキュリティ的にも安全、idがばれても他のidは類推できない
 ・1カラムなのでプログラム的に楽です。
 ・履歴管理しやすい
 などなどです。


_________________
1

スキルアップ/キャリアアップ(JOB@IT)