2006年4月 4日

[mysql 12911] Re: データベースのフィールド名について

橋本さん、ありがとうございます。m(__)m

> プライマリーキーのカラム名については、PHP側から、自動的に
> 予測できる名前にした方がいいです。
> 全て「id」のような名前にするのは一つの方法ですし、
> 「テーブル名_id」のような形で統一するのもいいですね。
「テーブル名_id」に変更してみました。結構いい感じです。
今まで不具合を追いにくかったのですがすごく簡単になりました。

プログラムも各idを出力するだけで方向性が見えてくるようにな
りした。
ありがとうございました。

> # さらに、個人的な意見で言えば、「id」に統一してしまう方が、
> # なにかと便利だとは思います。
気になる一言ですが、私も修行を積んでこの一言が分かるよう
になれるように勉強します。

ありがとうございました。

Honma


----- Original Message -----
From: "Kenta Hashimoto"
To:
Sent: Monday, April 03, 2006 12:03 PM
Subject: [mysql 12907] Re: データベースのフィールド名について


橋本です。

カラム名は、人、組織によって、ポリシー、コーディングスタンダードが
変わってくるものだと思います。

その前提の上で、経験的に、次のような感覚を持っています。

プライマリーキーのカラム名については、PHP側から、自動的に
予測できる名前にした方がいいです。
再利用可能な、DBを扱うモジュールを作りやすくなるためです。

全て「id」のような名前にするのは一つの方法ですし、
「テーブル名_id」のような形で統一するのもいいですね。

予測できないような名前にした場合、設定ファイルや、対応表が
どうしても必要になり、手間が増えてしまいます。
つまり、「customer」というテーブルがあったとして、
プライマリーキーのカラム名は、「csm_id」などにはしないほうが
無難です。するなら、「customer_id」の方が良いですね。

# さらに、個人的な意見で言えば、「id」に統一してしまう方が、
# なにかと便利だとは思います。


06/04/01 に honma さんは書きました:
> いつも拝見させていただきありがとうございます。
>
> ちょっと、変な質問で申し訳ありませんが教えてください。
> フィールド名についてなんですが、今の私のつけ方に疑問
> を感じまして投稿させていただきます。
> 環境はOS XP-Pro MySql4.1.13 PHP5 Apache1.3です。
>
> 以下のような感じでテーブルを作成しました。
> ここで疑問ですがidはすべてidにしたのですが、それぞれ
> 違う名前のほうがいいのでしょうか?
> たとえば、csm_id ko_id syain_idなどです。
> そうした場合、他のフィールドもすべてユニークなほうが
> 使いやすいのでしょうか?
> たとえば csm_name ko_name syain_name などです。
> 初歩的な質問で申し訳ありませんがよろしくお願いします。
>
> #customer
> $query = "CREATE TABLE " . TABLE_NAME_KOKYAKU . "("
> . "id INT NOT NULL UNIQUE PRIMARY KEY,"
> . "name VARCHAR(20),"
> . "kana VARCHAR(20),"
> . "keisho VARCHAR(6),"
> . "birthday DATE,"
> . "ox VARCHAR(4),"
> . "yubin VARCHAR(20),"
> . "jusho1 VARCHAR(64),"
> . "jusho2 VARCHAR(64),"
> . "tel VARCHAR(20),"
> . "fax VARCHAR(20),"
> . "keitai VARCHAR(20),"
> . "mail VARCHAR(45),"
> . "shokushu INT(2),"
> . "group_id INT,"
> . "bikou VARCHAR(256),"
> . "shoukyo INT(1) Default 0,"
> . "modify DATETIME)";
> $result = mysql_query($query , $db);
>
> #子
> $query = "CREATE TABLE " . TABLE_NAME_KO . "("
> . "id INT NOT NULL UNIQUE AUTO_INCREMENT PRIMARY KEY,"
> . "name VARCHAR(32),"
> . "kana VARCHAR(32),"
> . "birthday DATE,"
> . "ox VARCHAR(4),"
> . "csm_id INT,"
> . "bikou VARCHAR(128),"
> . "shoukyo INT(1) Default 0,"
> . "modify DATETIME)";
> $result = mysql_query($query , $db);
>
> #販売履歴
> $query = "CREATE TABLE " . TABLE_NAME_HANBAI . "("
> . "id INT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,"
> . "order_date DATE,"
> . "csm_id INT,"
> . "ko_id INT,"
> . "shohin_id INT,"
> . "shiire_tanka INT,"
> . "syanai_tanka INT,"
> . "hanbai_tanka INT,"
> . "denpyo_no INT,"
> . "nouhin DATE,"
> . "shoukyo INT(1) Default 0,"
> . "modify DATETIME)";
> $result = mysql_query($query , $db);
>
> #フォロー履歴
> $query = "CREATE TABLE " . TABLE_NAME_FOLLOW . "("
> . "id INT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,"
> . "follow_date DATE,"
> . "csm_id INT,"
> . "tanto_id INT,"
> . "shubetsu_id INT,"
> . "naiyou VARCHAR(200),"
> . "bikou VARCHAR(32),"
> . "shoukyo INT(1) Default 0,"
> . "modify DATETIME)";
> $result = mysql_query($query , $db);
>
> #フォロー種別
> $query = "CREATE TABLE " . TABLE_NAME_FOLLOW_SHUBETSU . "("
> . "id INT NOT NULL UNIQUE PRIMARY KEY,"
> . "name VARCHAR(50),"
> . "hosoku VARCHAR(20),"
> . "bikou VARCHAR(50),"
> . "shoukyo INT(1) Default 0,"
> . "modify DATETIME)";
> $result = mysql_query($query , $db);
>
> 以下省略-----
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

投稿者 xml-rpc : 2006年4月 4日 06:07
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/34378
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。