2011-12-03 16 views
7

मैं एक नई प्रणाली का निर्माण कर रहा हूँ (दीपक - ubuntu सर्वर, php 5.3, mysql 5.5, अपाचे 2, redis) मेरी कंपनी के लिएडेटाबेस कॉलम और विदेशी कुंजी सामान्य

(एक संस्करण 2.0) की तरह मैं इसे बनाना चाहते सही और इसे बेहतर बनाओ।

मैं innodb का उपयोग करना चाहता हूं और मैं जानना चाहता हूं कि नामकरण कॉलम और विदेशी कुंजी में मानक है या नहीं।

उदाहरण के लिए

:

table_a 
table_a_id 
table_a_name 
etc... 

इस तरह से जब आप अपने बहुत ही आसान भेद करने के लिए शामिल हो लेकिन यह एसक्यूएल लिखने के लिए दर्द हो सकता है अगर आप लंबे समय तक नाम छोड़ दिया है।

table_a 
id 
name 
etc... 

इस तरह, टेबल को समझने के लिए बहुत आसान है, लेकिन आप उपनाम या तालिका नाम हर बार जब आप में शामिल होने के लिए छोड़ दिया उपयोग करना होगा।

डेटाबेस सामान्यीकरण के डेटाबेस.table.column भाग नामकरण कर रहा है?

+2

पूरी तरह से एक व्यक्तिगत प्रश्न, जब तक आप एक मानक रखते हैं और आप इसके साथ चिपके रहते हैं –

उत्तर

11

डेटाबेस, टेबल, कॉलम, कुंजी, विदेशी कुंजी के नामकरण सम्मेलन में डेटाबेस सामान्यीकरण के साथ कुछ लेना देना नहीं है।

हालांकि, मैं हर जगह एक ही नामकरण सम्मेलन संरचना को रखने की सलाह देता हूं। मेरे सभी नाम बहुत मानक हैं, एकल शब्द या यदि यह एक वाक्यांश है तो इसे अंडरस्कोर, संख्याओं और न ही विशेष वर्णों से अलग किया जाता है। कॉलम, कुंजी और FK (संख्या के साथ अपवाद के साथ) के लिए एक ही और मैं हमेशा plurials का उपयोग करें (अपनी दुर्लभ आप केवल 1 db, 1 कॉलम और 1 पंक्ति के साथ 1 तालिका है)

यहाँ

मुझे क्या करना है:

databases: companies 
tables: clients, clients_products, products 
column: id, name, address, city 
key: name 
unique key: name 

इस तरह जब आप अपने डेटा से पूछते हैं, तो यह बहुत स्पष्ट है कि आप क्या अनुरोध करते हैं या आप क्या देखते हैं।

0

डेटाबेस सामान्यीकरण के डेटाबेस.table.column भाग नामकरण कर रहा है?

नहीं। संक्षेप में बोलते हुए, सामान्यीकरण को गुणों के बीच कुछ प्रकार की निर्भरताओं की पहचान के आधार पर पुनर्गठन तालिकाओं द्वारा डेटा अखंडता बढ़ाना पड़ता है।

टेबल और कॉलम के नाम आपकी API हैं।

आईएसओ 11179, सूचना प्रौद्योगिकी-मेटाडाटा रजिस्ट्री (एमडीआर), एक रजिस्ट्री में मेटाडाटा का प्रतिनिधित्व करने के लिए एक अंतरराष्ट्रीय मानक है। यद्यपि यह अर्थशास्त्र के उद्देश्य से है, टेबल और कॉलम नहीं, कई डेटाबेस डिजाइनर इसे टेबल और कॉलम नाम देने के लिए एक गाइड के रूप में उपयोग करते हैं। बड़े संगठनों में, यह वास्तव में मूल्यवान है। (कार्यात्मक निर्भरता, सामान्यीकरण का हिस्सा है, एक अर्थपूर्ण बात है।)

आपको तालिका नाम और ऑब्जेक्ट क्लास के बीच अंतर का पता लगाने में उपयोगी लग सकता है। (ऑब्जेक्ट क्लास इस अर्थ में ऑब्जेक्ट उन्मुख प्रोग्रामिंग के साथ कुछ लेना देना नहीं है। यह आईएसओ 11179 में एक तकनीकी शब्द है।)

A review copy of part 5 (PDF), नामकरण और पहचान सिद्धांत, ऑनलाइन उपलब्ध है। Wikipedia एक और अधिक स्थायी संदर्भ हो सकता है। (शायद नहीं।)