2012-09-13 3 views
8

웹 사이트를 만들고있어 데이터베이스에 임의의 수의 데이터를 저장해야합니다.SQL 데이터베이스에 일대 다 관계를 저장하는 방법은 무엇입니까? (MySQL)

예 : 사용자 존은 잭이 내가 그렇게 사용자 당 값의 무한한 번호를 저장 할 수 있어야합니다 3.

가질 수있는 하나 개의 전화 번호가있을 수 있습니다.

어디서나이 작업을 수행하는 방법을 찾을 수 없으므로 도와주세요! :)

저는 관계형 데이터베이스에서 초보자입니다.

+0

이것은 일대 다 관계에 불과합니다. 예를 들어 사용자는 많은 전화 번호를 가질 수 있습니다. 이 내용은 어딘가에 데이터베이스 개념 자습서에서 다룹니다. – 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

두 번째 테이블에 대해서는 phone_numbers.id 필드가 필요합니까? 'update phone_numbers는 어디에서 할 수 있습니까? user_id = '12345'AND phone_number = '123-456-7890''이 작업을 올바르게하고 싶지만 phone_numbers.id 필드가 필요한 이유를 이해하려고합니다. 고맙습니다! – cmpreshn

관련 문제