ऐसा लगता है कि आप बस थोड़ा सा मार्गदर्शन चाहते हैं। इसलिए मैं संक्षिप्त होने की कोशिश करूंगा।
$sql = "CREATE TABLE customerGroups (
customer_id int(11) NOT NULL,
group_id int(11) NOT NULL,
PRIMARY KEY (customer_id, group_id),
CONSTRAINT customers_customergroups_fk
FOREIGN KEY (customer_id)
REFERENCES customers (customer_id)
ON DELETE CASCADE,
CONSTRAINT groups_customergroups_fk
FOREIGN KEY (group_id)
REFERENCES groups (group_id)
ON DELETE CASCADE
)ENGINE = INNODB;";
आपको केवल जरूरत आईडी नंबर जब पहचान को कम करना मुश्किल होता है। जब आप लोगों के साथ व्यवहार कर रहे होते हैं, तो पहचान को कम करना मुश्किल होता है। "जॉन स्मिथ" नाम के बहुत से लोग हैं।
लेकिन आप दो चीजों से निपट रहे हैं जिन्हें पहले ही पहचाना जा चुका है। (और सभी चीजों के आईडी नंबरों से पहचाना जाता है।)
कैस्केडिंग डिलीट समझ में आता है। आईडी नंबरों पर अपडेट को कैस्केड करना अपेक्षाकृत दुर्लभ है; माना जाता है कि वे कभी नहीं बदलते। (मुख्य कारण Oracle DBA इस बात पर जोर देते हैं कि प्राथमिक कुंजी हमेशा होनी चाहिए आईडी नंबर हो, और यह कि उन्हें कभी नहीं होना चाहिए परिवर्तन इसलिए है क्योंकि Oracle नहीं कैस्केड अपडेट।) यदि, बाद में, कुछ आईडी नंबर जरूरत किसी भी कारण से बदलने के लिए, आप ON UPDATE CASCADE को शामिल करने के लिए तालिका को बदल सकते हैं।
$sql = "CREATE TABLE groups
(
group_id int(11) NOT NULL AUTO_INCREMENT,
group_title varchar(50) NOT NULL UNIQUE,
group_desc varchar(140),
PRIMARY KEY (group_id)
)ENGINE = INNODB;";
Group_title पर अतिरिक्त अनन्य बाधा पर ध्यान दें। आप अपने डेटाबेस में ऐसा कुछ भी (नीचे) की अनुमति नहीं देना चाहते हैं।
group_id group_title
--
1 First group
2 First group
3 First group
...
9384 First group
आप इस प्रकार के परिवर्तनों को अपनी सभी तालिकाओं में ले जाना चाहेंगे। (शायद, आपके ग्राहकों की तालिका को छोड़कर।)