2012-09-13 31 views
8

Web sitesi yapıyorum ve veri tabanımdaki rastgele bir veriyi depolamam gerekiyor.SQL veritabanımda bire çok ilişki nasıl saklanır? (MySQL)

örneğin: Kullanıcı john jack Öyle kullanıcı başına değerlerinden sonsuz sayıda saklamak gerekiyor 3.

olabilir bir telefon numarası olabilir.

Bunu nasıl yapabileceğimi bulamadım, Umarım bana yardımcı olabilirsiniz! :)

İlişkisel veritabanlarında bir acemiyim.

+0

Bu sadece bir tek birçok ilişki olduğunu. Bir kullanıcının birçok telefon numarası olabilir. Bu bir yerde öğretici bir veritabanında ele alınacaktır. – Arran

cevap

19

Telefon numaraları için ayrı bir tablo oluşturuyorsunuz (ör. 1: M ilişkisi).

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`) 
); 

Şimdi kolayca, basit bir katılımla bir kullanıcı telefon numarası alabilirsiniz;

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

iyi cevap söylemeliyim .. –

+0

Bu gerçekten iyi, bunu bilmiyordum! :) Bu harika, Teşekkürler! – Weacked

+1

2. tabloyla ilgili olarak, telefon_numbers.id alanı gerekli mi? Phone_numbers güncellemesinin yapılabilmesi için her şey hazır olur, burada user_id = '12345' AND phone_number = '123-456-7890' 'bunu doğru yapmak istiyorum ancak telefon_numbers.id alanının neden gerekli olduğunu anlamaya çalışıyorum. Teşekkür ederim! – cmpreshn

İlgili konular