मुझे पता है कि इस खेल में देर हो चुकी है, और इस सवाल का जवाब पहले से ही बहुत अच्छी तरह से दिया जा चुका है, लेकिन मैं कॉलम नामों के उपसर्ग के बारे में # 3 पर अपनी राय देना चाहता हूं।
सभी स्तंभों को एक उपसर्ग के साथ नामित किया जाना चाहिए जो उस तालिका के लिए अद्वितीय है जिसमें वे परिभाषित हैं।
उदाहरण के लिए, "ग्राहक" और "पता" को देखते हुए, क्रमशः "कस्ट" और "एड्र" के उपसर्गों के साथ चलते हैं। "ग्राहक" में "cust_id", "cust_name", आदि होंगे। "पता" में "addr_id", "addr_cust_id" (FK वापस ग्राहक), "addr_street", आदि होंगे।
जब मुझे पहली बार इस मानक के साथ प्रस्तुत किया गया था, तो मैं इसके खिलाफ मृत था; मुझे इस विचार से नफरत थी। मैं अतिरिक्त टाइपिंग और अतिरेक के बारे में सोच नहीं सका। अब मुझे इसके साथ पर्याप्त अनुभव हो गया है कि मैं कभी पीछे नहीं हटूंगा।
ऐसा करने का परिणाम यह है कि आपके डेटाबेस स्कीमा के सभी कॉलम अद्वितीय हैं। इसका एक बड़ा लाभ है, जो इसके विरुद्ध सभी तर्कों को टाल देता है (मेरी राय में, निश्चित रूप से):
आप अपना पूरा कोड आधार खोज सकते हैं और किसी विशेष कॉलम को छूने वाले कोड की प्रत्येक पंक्ति को मज़बूती से खोज सकते हैं।
# 1 से लाभ अविश्वसनीय रूप से बहुत बड़ा है। मैं एक कॉलम को हटा सकता हूं और यह जान सकता हूं कि स्कीमा से सुरक्षित रूप से हटाया जा सकता है इससे पहले कि फाइलों को अपडेट करने की आवश्यकता है। मैं एक कॉलम का अर्थ बदल सकता हूं और यह जान सकता हूं कि वास्तव में किस कोड को फिर से तैयार करने की आवश्यकता है। या मैं बस यह बता सकता हूं कि सिस्टम के किसी विशेष हिस्से में एक कॉलम से डेटा का उपयोग किया जा रहा है या नहीं। मैं उस समय की संख्या की गणना नहीं कर सकता, जिसने संभावित रूप से विशाल परियोजना को एक साधारण में बदल दिया है, और न ही हम विकास कार्यों में कितने घंटे बचाए हैं।
एक और, इसका अपेक्षाकृत मामूली लाभ यह है कि जब आप स्वयं से जुड़ते हैं तो आपको केवल टेबल-अलायस का उपयोग करना पड़ता है:
SELECT cust_id, cust_name, addr_street, addr_city, addr_state
FROM customer
INNER JOIN address ON addr_cust_id = cust_id
WHERE cust_name LIKE 'J%';