2012-09-13 6 views
8

मैं एक वेबसाइट बना रहा हूं और मुझे अपने डेटाबेस में एक यादृच्छिक संख्या डेटा संग्रहित करने की आवश्यकता है।मेरे एसक्यूएल डेटाबेस में कई संबंधों को कैसे स्टोर करें? (MySQL)

उदाहरण के लिए: उपयोगकर्ता जॉन जहां जैक 3.

मैं इतना प्रति उपयोगकर्ता मूल्यों की एक अनंत संख्या की दुकान में सक्षम होना चाहिए हो सकता है एक फोन नंबर हो सकता है।

मुझे यह नहीं मिला कि यह कहीं भी कैसे करें, आशा है कि आप मेरी मदद कर सकते हैं! :)

मैं रिलेशनल डेटाबेस में एक नौसिखिया हूं।

+0

यह सिर्फ एक एक कई संबंध है। उदा। उपयोगकर्ता के पास कई फोन नंबर हो सकते हैं। यह कहीं डेटाबेस डेटाबेस अवधारणाओं में शामिल किया जाएगा। – Arran

उत्तर

19

आप फोन नंबरों के लिए एक अलग तालिका बनाते हैं (यानी 1: एम रिलेशनशिप)।

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 फ़ील्ड आवश्यक है? क्या फ़ोन_numbers अपडेट करना ठीक होगा, जहां user_id = '12345' और phone_number = '123-456-7890'' मैं इसे सही तरीके से करना चाहता हूं, लेकिन मैं समझने की कोशिश कर रहा हूं कि phone_numbers.id फ़ील्ड की आवश्यकता क्यों है। धन्यवाद! – cmpreshn

संबंधित मुद्दे