DBの設計について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アホ

DBの設計について

#1

投稿記事 by アホ » 14年前

たとえば、

名前、住所、電話番号、友達

というフィールドがあったとします。

名前住所電話番号は基本一つだけなので困らないんですが、
友達は複数いる可能性があります。
この場合この友達の情報は別のテーブルに格納するのがよいのでしょうか?

その友達テーブルは、
名前、友達のフィールドだけ作っておいて、

Aさん、太郎君
Aさん、次郎君
Aさん、一郎君

というような感じでレコードに登録し、後からAさんの名前をキーにして友達情報を取り出すという方法を
思いついたんですが、これは一般的な方法なのでしょうか?

プログラマじゃないんで基本をまったく知りません
よろしくです。

box
記事: 2002
登録日時: 15年前

Re: DBの設計について

#2

投稿記事 by box » 14年前

アホ さんが書きました: 名前住所電話番号は基本一つだけなので困らないんですが、
人によっては、
 ・本名、ペンネーム、芸名
 ・本宅、別宅、別荘、妾宅
 ・固定電話、携帯電話
のように、複数持っていることがあるかもしれませんね。
アホ さんが書きました: 友達は複数いる可能性があります。
この場合この友達の情報は別のテーブルに格納するのがよいのでしょうか?
はい。その考え方でよいと思います。
アホ さんが書きました: その友達テーブルは、
名前、友達のフィールドだけ作っておいて、
名前そのものよりは、
AさんのID、太郎君
AさんのID、次郎君
AさんのID、一郎君

というような感じでレコードに登録し、後からAさんのID(名前ではなく)をキーにして友達情報を取り出す

のがいいのではないか、と思います。
複数のテーブルから情報を取り出す際のキー情報として、その人(例えばAさん)のIDを使う、
という方法が一般的ではないか、と個人的には思います。
まあ、私はデータベースに関しては全くの素人ですので、この回答をあまり鵜呑みにしない方がいいかもしれません。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アホ

Re: DBの設計について

#3

投稿記事 by アホ » 14年前

boxさんありがとうございます

名前はIDに代えたほうがよさそうですね。

他の方もこの方法が一般的な方法なのか回答願います。
もし違うなら一般的な方法を教えてください。

アバター
ookami
記事: 214
登録日時: 15年前
住所: 東京都

Re: DBの設計について

#4

投稿記事 by ookami » 14年前

こんにちは。ookamiです。
私もboxさんと同様で、IDを持たせるべきだと思います。
そうでないと同姓同名の人を区別できなくなってしまうので。

アホ

Re: DBの設計について

#5

投稿記事 by アホ » 14年前

ookamiさんありがとうございます。

ookamiさんも友達の情報は別テーブルに登録して
IDをキーにして情報を取り出すという方法は別に問題ないと思ってるっていう認識でいいですよね?

アバター
ookami
記事: 214
登録日時: 15年前
住所: 東京都

Re: DBの設計について

#6

投稿記事 by ookami » 14年前

ですです。言葉足らずですみません^^;
具体的には以下のような感じです。

T_user -- ユーザーテーブル
ID name
-- ----
1 太郎
2 次郎
3 三郎

T_friend -- 友達テーブル
ID1 ID2
-- --
1  2   ←太郎と次郎が友達
2  3   ←次郎と三郎が友達

(太郎と三郎は友達じゃない)

アホ

Re: DBの設計について

#7

投稿記事 by アホ » 14年前

なるほど。
友達テーブルもIDだけで管理できますね。
さすが!
解決にします。ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る