2012-09-13 25 views
8

Tôi đang tạo một trang web và tôi cần lưu trữ một số lượng dữ liệu ngẫu nhiên trong cơ sở dữ liệu của mình.Làm cách nào để lưu trữ quan hệ một đến nhiều trong cơ sở dữ liệu sql của tôi? (MySQL)

ví dụ: Người dùng john có thể có một số điện thoại nơi jack có thể có 3.

tôi cần để có thể để lưu trữ một số lượng vô hạn các giá trị cho mỗi người dùng.

Tôi không thể tìm thấy cách thực hiện việc này ở bất cứ đâu, Hy vọng bạn có thể giúp tôi! :)

Tôi là người mới trong Cơ sở dữ liệu quan hệ.

+0

Đây chỉ là một một đến nhiều mối quan hệ. Ví dụ: người dùng có thể có nhiều số điện thoại. Điều này sẽ được đề cập trong một khái niệm cơ sở dữ liệu hướng dẫn ở đâu đó. – Arran

Trả lời

19

Bạn tạo bảng riêng cho số điện thoại (nghĩa là mối quan hệ 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`) 
); 

Bây giờ bạn có thể, một cách dễ dàng, có được số điện thoại của người dùng với sự tham gia đơn giản;

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

câu trả lời hay Tôi phải nói .. –

+0

Điều này thực sự tốt, tôi không biết về điều này! :) điều này thật tuyệt vời, cảm ơn bạn! – Weacked

+1

Về bảng thứ 2, trường phone_numbers.id có cần thiết không? Nó sẽ được ok để làm 'cập nhật phone_numbers nơi user_id = '12345' AND phone_number = '123-456-7890'' Tôi muốn làm điều này một cách chính xác, nhưng tôi đang cố gắng hiểu tại sao lĩnh vực phone_numbers.id là cần thiết. Cảm ơn bạn! – cmpreshn

Các vấn đề liên quan