2012-09-13 21 views
8

私はウェブサイトを作っているので、データベースに乱数を格納する必要があります。SQLデータベースに1対多の関係を格納するにはどうすればいいですか? (MySQL)

例えば:ユーザーJohnは、ジャックが私はユーザーごとの値の無限の数を格納できるようにする必要がある3

有することができ、1つの電話番号を有していてもよいです。

どこでもこれを行う方法が見つかりませんでした。あなたが私を助けてくれることを願っています! :)

私はリレーショナルデータベースでは初心者です。

+0

これはちょうど1対多の関係にあります。たとえば、ユーザーは多くの電話番号を持つことができます。これは、データベースコンセプトのチュートリアルのどこかで説明されています。 – Arran

答えて

19

電話番号用に別のテーブルを作成します(1:M関係)。

create table `users` (
    `id` int unsigned not null auto_increment, 
    `name` varchar(100) not null, 
    primary key(`id`) 
); 

create table `phone_numbers` (
    `id` int unsigned not null auto_increment, 
    `user_id` int unsigned not null, 
    `phone_number` varchar(25) not null, 
    index pn_user_index(`user_id`), 
    foreign key (`user_id`) references users(`id`) on delete cascade, 
    primary key(`id`) 
); 

簡単な方法で、単純な結合でユーザーの電話番号を取得できます。

select 
    pn.`phone_number` 
from 
    `users` as u, 
    `phone_numbers` as pn 
where 
    u.`name`='John' 
    and 
    pn.`user_id`=u.`id` 
+1

良い答え私は言う必要があります。 –

+0

これは本当に上手です、私はこれについて知りませんでした! :) これは素晴らしいです、ありがとう! – Weacked

+1

2番目のテーブルについて、phone_numbers.idフィールドは必要ですか? 'update phone_numbers where update user_id = '12345' AND phone_number = '123-456-7890''これを正しくしたいのですが、phone_numbers.idフィールドが必要な理由を理解しようとしています。ありがとうございました! – cmpreshn

関連する問題