- - PR -
主キー、外部キーの命名どうしてますか?
1
投票結果総投票数:28 | |||
---|---|---|---|
テーブル名に関係なくid など固定の名称 | ![]() |
2票 | 7.14% |
table名+id | ![]() |
3票 | 10.71% |
主キーなんかつけない | ![]() |
0票 | 0.00% |
その他 | ![]() |
23票 | 82.14% |
|
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-02-18 15:41
こんにちは
最近いろいろな案件をメインテナンスする機会が多いのですが、 ベンダーによってさまざまな命名規約があるようで... 気になったので皆さんの意見をお聞かせください。 皆さんはどんな命名規約でテーブル定義を作成しているのでしょうか? 最近良く見かけるのは以下のような命名規約です。 (cakePHPの規約らしいです。) ・テーブル名は複数形 ("Users")など ・主キーは("id" 固定) ・外部キーは(table名単数形+"_id") | ||||||||
|
投稿日時: 2008-02-19 01:25
それはジョー・セルコ氏が提案してた命名規則かも。
声高々に提唱してる訳じゃなさそうですが。 「プログラマのためのSQL」とか書いてる方です。 | ||||||||
|
投稿日時: 2008-02-19 07:54
どれもERやDOAの考え方からするとびっくりするような命名法です。 主キーは主キーをつけるためにわざわざつけるものではなく、正規化の段階で 自然と導出されてゆくものです。 | ||||||||
|
投稿日時: 2008-02-19 11:02
大方予想していましたが、その他が一番多いですね。
見かけたら読んでみます。
それが自然ですよね。 私が以前勤めていた会社の社内ルールでは テーブル名は 省略形2文字+(MST/TRN/TBL) (例: 得意先マスタ TKMST, 売り上げトランザクション URTRN, 雑テーブル ZTTBL) フィールド名は テーブル名プリフックス+省略形4文字+フィールド型サフィックス (例: 得意先テーブル.担当者名 TKTANTNM, 売り上げテーブル.登録日: URTORKDT) などとなっていました。 DBで仕事をしたのがその会社でしたので、今でも少なからず影響を受けていて 個人用のツールをさっさと作るときは正規化とかはあまり考えず、このルールを 使って作ったりしてます。 最初に触ったことで、一番記憶に残っていて、一番慣れているからですね。 このDBでは主キーは存在していませんでしたので、メンテナンスのときなどに 行を一意に決めるために複数のフィールドを指定しなければならず、苦労しました。 マスタ系は主キーではないけど、ユニークな値をつけるルールがあったので よかったのですが... | ||||||||
|
投稿日時: 2008-02-19 12:31
これは初めて見る規約で良くはしりませんが、ぱっと見で気づくのは、複合主キーができませんよね。常にオートナンバーのような人為キーを付けることを前提としているのでしょうか?O/Rマッピング向きの規則のような感じもします。 | ||||||||
|
投稿日時: 2008-02-20 22:36
以前にこんな議論をしたのを思い出しました。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37978&forum=3&17 結局、とりあえず次のようなルールを決めて設計してます。 ・テーブル名は単数形 ・主キーは常に人工キーで、列名は"id" ・外部キーは"<テーブル名>_id" | ||||||||
|
投稿日時: 2008-02-21 09:24
はじめて書いてみました。
私もカーニーさんとほぼ同じでidをキー(Guidを多く使います)にします。 特に意識(メリット)することは ・レプリケーション、インポートが楽 ・セキュリティ的にも安全、idがばれても他のidは類推できない ・1カラムなのでプログラム的に楽です。 ・履歴管理しやすい などなどです。 _________________ |
1