जैसा कि कुछ टिप्पणियों ने पहले ही कहा था, एक समाधान एक नई प्राथमिक कुंजी का उपयोग करना है
उदाहरण के लिए (@onedaywhen के उदाहरण के बाद), मान लें कि तालिका में ऐसी पुस्तकें मौजूद हैं जो पुस्तकों की एक सूची संग्रहीत करती हैं और हम प्राथमिक कुंजी के रूप में आईएसबीएन निर्धारित करने के लिए "उपयोग" करते हैं। हालाँकि, कुछ लेखकों ने गलत आईएसबीएन टाइप करने की गलती की है, इसलिए उन्होंने आईएसबीएन को बदलने के लिए कहा, इसमें अगले कार्य शामिल थे:
- तालिका पुस्तकों में एक नई रजिस्ट्री बनाएँ
- पुराने आईएसबीएन से नए आईएसबीएन के सभी संदर्भों को इंगित करें। (*)
- और अंत में, टेबल बुक से पुरानी रजिस्ट्री को हटा दें।
(*) यह एक डेटाबेस मॉडल के लिए सभी संदर्भों को खोजने के लिए तुच्छ हो सकता है जो विदेशी कुंजी का उपयोग करता है लेकिन कुछ मॉडलों में इसका अभाव है।
Table Books
ISBN is the primary key
NAME is a simple field.
etc.
हम इसे बदलते हैं
Table Books
InternalBookId as the primary key
ISBN as a simple field or an indexed field.
NAME is a simple field.
etc.
कहाँ नई InternalBookId भी एक autonumeric मूल्य किया गया हो सकता है।
इसके बारे में विपक्ष:
यह एक नया क्षेत्र जोड़ता है जो अधिक स्थान / संसाधन का उपयोग करता है।
इसके लिए पूरे मॉडल को फिर से लिखना पड़ सकता है।
नया मॉडल कम आत्म समझाया जा सकता है।
पेशेवर
- "प्राथमिक कुंजी" को म्यूट करने की अनुमति देता है।
- उदाहरण के लिए, "प्राथमिक कुंजी" को छोड़ना या फिर से तैयार करना भी अनुमति देता है, पुस्तकों को आईएसबीएन -13 में बदलना इतना आसान है जितना कि पुराने कॉलम को छोड़ना और एक नया बनाना
नई तालिका:
Table Books
InternalBookId as the primary key
ISBN13 is a new field.
NAME is a simple field.
etc.