यदि मेरे पास MySQL में एक तालिका है जो बेस क्लास का प्रतिनिधित्व करती है, और मेरे पास टेबल का एक गुच्छा है जो व्युत्पन्न कक्षाओं में फ़ील्ड का प्रतिनिधित्व करता है, जिनमें से प्रत्येक एक विदेशी कुंजी के साथ बेस टेबल को संदर्भित करता है, तो क्या कोई तरीका है व्युत्पन्न तालिका और आधार तालिका के बीच एक-से-एक संबंध को लागू करने के लिए MySQL प्राप्त करें, या क्या इसे कोड में किया जाना है?MySQL विदेशी कुंजी - टेबल पर एक से एक को कैसे लागू करें?
उदाहरण के रूप में निम्न त्वरित 'एन' गंदे स्कीमा का उपयोग करना, क्या MySQL को यह सुनिश्चित करने का कोई तरीका है कि product_cd और product_dvd दोनों पंक्तियां समान product_id साझा नहीं कर सकती हैं? डेटाबेस को इस संबंध को लागू करने की अनुमति देने के लिए स्कीमा को डिज़ाइन करने का कोई बेहतर तरीका है, या क्या यह संभव नहीं है?
CREATE TABLE IF NOT EXISTS `product` (
`product_id` int(10) unsigned NOT NULL auto_increment,
`product_name` varchar(50) NOT NULL,
`description` text NOT NULL,
PRIMARY KEY (`product_id`)
) ENGINE = InnoDB;
CREATE TABLE `product_cd` (
`product_cd_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`product_id` INT UNSIGNED NOT NULL ,
`artist_name` VARCHAR(50) NOT NULL ,
PRIMARY KEY (`product_cd_id`) ,
INDEX (`product_id`)
) ENGINE = InnoDB;
ALTER TABLE `product_cd` ADD FOREIGN KEY (`product_id`)
REFERENCES `product` (`product_id`)
ON DELETE RESTRICT ON UPDATE RESTRICT ;
CREATE TABLE `product_dvd` (
`product_dvd_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`product_id` INT UNSIGNED NOT NULL ,
`director` VARCHAR(50) NOT NULL ,
PRIMARY KEY (`product_dvd_id`) ,
INDEX (`product_id`)
) ENGINE = InnoDB;
ALTER TABLE `product_dvd` ADD FOREIGN KEY (`product_id`)
REFERENCES `product` (`product_id`)
ON DELETE RESTRICT ON UPDATE RESTRICT ;
@Skliwz, आप कैसे चलाता स्कीमा के साथ इस बाधा प्रदान की लागू करने के लिए इस्तेमाल किया जा सकता के बारे में अधिक विवरण प्रदान करें कर सकते हैं?
@boes, यह बहुत अच्छा लगता है। यह उन परिस्थितियों में कैसे काम करता है जहां आपके बच्चे के बच्चे हैं? उदाहरण के लिए, अगर हमने product_movie जोड़ा और product_movie के बच्चे को product_dvd बनाया? क्या यह उत्पादकता के लिए चेक बाधा बनाने के लिए एक रखरखाव दुःस्वप्न होगा, सभी बच्चों के प्रकारों में भी कारक होना चाहिए?
अपने प्रश्न को संपादित करने के बजाय उत्तरों पर टिप्पणियों का उपयोग करें। – epochwolf