ページ 1 / 1
DBの設計について
Posted: 2012年6月07日(木) 19:30
by アホ
たとえば、
名前、住所、電話番号、友達
というフィールドがあったとします。
名前住所電話番号は基本一つだけなので困らないんですが、
友達は複数いる可能性があります。
この場合この友達の情報は別のテーブルに格納するのがよいのでしょうか?
その友達テーブルは、
名前、友達のフィールドだけ作っておいて、
Aさん、太郎君
Aさん、次郎君
Aさん、一郎君
というような感じでレコードに登録し、後からAさんの名前をキーにして友達情報を取り出すという方法を
思いついたんですが、これは一般的な方法なのでしょうか?
プログラマじゃないんで基本をまったく知りません
よろしくです。
Re: DBの設計について
Posted: 2012年6月07日(木) 20:13
by box
アホ さんが書きました:
名前住所電話番号は基本一つだけなので困らないんですが、
人によっては、
・本名、ペンネーム、芸名
・本宅、別宅、別荘、妾宅
・固定電話、携帯電話
のように、複数持っていることがあるかもしれませんね。
アホ さんが書きました:
友達は複数いる可能性があります。
この場合この友達の情報は別のテーブルに格納するのがよいのでしょうか?
はい。その考え方でよいと思います。
アホ さんが書きました:
その友達テーブルは、
名前、友達のフィールドだけ作っておいて、
名前そのものよりは、
AさんのID、太郎君
AさんのID、次郎君
AさんのID、一郎君
というような感じでレコードに登録し、後からAさんのID(名前ではなく)をキーにして友達情報を取り出す
のがいいのではないか、と思います。
複数のテーブルから情報を取り出す際のキー情報として、その人(例えばAさん)のIDを使う、
という方法が一般的ではないか、と個人的には思います。
まあ、私はデータベースに関しては全くの素人ですので、この回答をあまり鵜呑みにしない方がいいかもしれません。
Re: DBの設計について
Posted: 2012年6月07日(木) 20:34
by アホ
boxさんありがとうございます
名前はIDに代えたほうがよさそうですね。
他の方もこの方法が一般的な方法なのか回答願います。
もし違うなら一般的な方法を教えてください。
Re: DBの設計について
Posted: 2012年6月07日(木) 20:59
by ookami
こんにちは。ookamiです。
私もboxさんと同様で、IDを持たせるべきだと思います。
そうでないと同姓同名の人を区別できなくなってしまうので。
Re: DBの設計について
Posted: 2012年6月07日(木) 21:12
by アホ
ookamiさんありがとうございます。
ookamiさんも友達の情報は別テーブルに登録して
IDをキーにして情報を取り出すという方法は別に問題ないと思ってるっていう認識でいいですよね?
Re: DBの設計について
Posted: 2012年6月07日(木) 21:18
by ookami
ですです。言葉足らずですみません^^;
具体的には以下のような感じです。
T_user -- ユーザーテーブル
ID name
-- ----
1 太郎
2 次郎
3 三郎
T_friend -- 友達テーブル
ID1 ID2
-- --
1 2 ←太郎と次郎が友達
2 3 ←次郎と三郎が友達
(太郎と三郎は友達じゃない)
Re: DBの設計について
Posted: 2012年6月07日(木) 21:23
by アホ
なるほど。
友達テーブルもIDだけで管理できますね。
さすが!
解決にします。ありがとうございました。