तालिका नाम
हाल ही में सीखा गया विलक्षण सही है
हाँ। हीथ्स से सावधान रहें। तालिका के नामों में बहुवचन किसी ऐसे व्यक्ति का एक निश्चित संकेत है जिसने किसी भी मानक सामग्री को नहीं पढ़ा है और डेटाबेस सिद्धांत का कोई ज्ञान नहीं है।
मानकों के बारे में कुछ अद्भुत बातें हैं:
- वे सभी एक दूसरे के साथ एकीकृत हैं
- वे साथ साथ काम करते हैं
- वे हमारे दिमाग से बड़े दिमाग से लिखे गए थे, इसलिए हमें उनसे बहस करने की जरूरत नहीं है।
मानक तालिका का नाम तालिका में प्रत्येक पंक्ति को संदर्भित करता है , जिसका उपयोग सभी वर्बेज में किया जाता है, न कि तालिका की कुल सामग्री (हम जानते हैं कि Customer
तालिका में सभी ग्राहक शामिल हैं)।
संबंध, क्रिया वाक्यांश
वास्तविक रिलेशनल डेटाबेस में जो मॉडल किए गए हैं (जैसा कि प्री-1970 के रिकॉर्ड फाइलिंग सिस्टम के विपरीत है [ Record IDs
जिसके द्वारा विशेषता के लिए SQL डेटाबेस कंटेनर में कार्यान्वित किया जाता है):
- तालिकाएँ डेटाबेस के विषय हैं , इस प्रकार वे संज्ञा , फिर से, एकवचन हैं
- तालिकाओं के बीच संबंधों हैं क्रिया कि संज्ञाएं के बीच जगह ले, इस प्रकार वे कर रहे हैं क्रियाएं (यानी वे मनमाने ढंग से गिने या नाम नहीं कर रहे हैं)
- कि है विधेय
- डेटा मॉडल से सीधे पढ़ा जा सकता है (अंत में मेरे उदाहरण देखें)
- (एक स्वतंत्र तालिका (एक पदानुक्रम में शीर्ष-सबसे माता-पिता) के लिए समर्पित है कि यह स्वतंत्र है)
- इस प्रकार क्रिया वाक्यांश को ध्यान से चुना जाता है, ताकि यह सबसे सार्थक हो, और सामान्य शब्दों से बचा जाए (यह अनुभव के साथ आसान हो जाता है)। वर्ब वाक्यांश मॉडलिंग के दौरान महत्वपूर्ण है क्योंकि यह मॉडल को हल करने में सहायता करता है, अर्थात। संबंधों को स्पष्ट करना, त्रुटियों की पहचान करना और तालिका के नामों को सही करना।
Diagram_A
बेशक, संबंध SQL में CONSTRAINT FOREIGN KEY
चाइल्ड टेबल (अधिक, बाद में) के रूप में कार्यान्वित किया जाता है । यहाँ है क्रिया वाक्यांश (मॉडल में), विधेय है कि यह प्रतिनिधित्व करता (मॉडल से पढ़ने के लिए), और FK बाधा नाम :
Initiates
Each Customer Initiates 0-to-n SalesOrders
Customer_Initiates_SalesOrder_fk
तालिका • भाषा
हालाँकि, तालिका का वर्णन करते समय , विशेष रूप से तकनीकी भाषा में जैसे कि Predicates, या अन्य दस्तावेज, अंग्रेजी भाषा में स्वाभाविक रूप से एकवचन और बहुवचन का उपयोग करते हैं। ध्यान में रखते हुए तालिका को एकल पंक्ति (संबंध) के लिए नाम दिया गया है और भाषा प्रत्येक व्युत्पन्न पंक्ति (व्युत्पन्न संबंध) को संदर्भित करती है:
Each Customer initiates zero-to-many SalesOrders
नहीं
Customers have zero-to-many SalesOrders
इसलिए, अगर मुझे एक तालिका "उपयोगकर्ता" मिली और फिर मुझे ऐसे उत्पाद मिले जो केवल उपयोगकर्ता के पास होंगे, तो क्या तालिका को "उपयोगकर्ता-उत्पाद" या सिर्फ "उत्पाद" नाम दिया जाना चाहिए? यह कई रिश्तों में से एक है।
(यह एक नामकरण-सम्मेलन का प्रश्न नहीं है; यह एक db डिजाइन प्रश्न है।) user::product
1 :: n क्या मायने रखता है कि क्या product
एक अलग इकाई है और क्या यह एक स्वतंत्र तालिका है , अर्थात। यह अपने आप मौजूद हो सकता है। इसलिए product
, नहीं user_product
।
और अगर product
केवल एक के संदर्भ में मौजूद है user
, यानी। यह एक निर्भर तालिका है , इसलिए user_product
।
Diagram_B
और आगे, अगर मेरे पास (किसी कारण से) प्रत्येक उत्पाद के लिए कई उत्पाद विवरण होंगे, तो क्या यह "उपयोगकर्ता-उत्पाद-वर्णन" या "उत्पाद-वर्णन" या सिर्फ "विवरण" होगा? निश्चित रूप से सही विदेशी कुंजी सेट के साथ .. इसका केवल नामकरण ही समस्याग्रस्त होगा क्योंकि मेरे पास उपयोगकर्ता विवरण या खाता विवरण या जो भी हो सकता है।
ये सही है। या तो user_product_description
Xor product_description
सही होगा, जो उपरोक्त के आधार पर होगा। इसे दूसरे से अलग नहीं करना है xxxx_descriptions
, बल्कि यह नाम देना है कि यह कहां है, उपसर्ग मूल तालिका है।
क्या होगा अगर मैं केवल दो कॉलम के साथ एक शुद्ध संबंधपरक तालिका (कई से कई) चाहता हूं, तो यह कैसा दिखेगा? "उपयोगकर्ता-सामान" या शायद "rel-user-stuff" जैसा कुछ? और अगर पहले वाला, इससे क्या अंतर होगा, उदाहरण के लिए "उपयोगकर्ता-उत्पाद"?
उम्मीद है कि रिलेशनल डेटाबेस में सभी टेबल शुद्ध रिलेशनल, सामान्यीकृत टेबल हैं। नाम में यह पहचानने की कोई आवश्यकता नहीं है (अन्यथा सभी तालिकाएं होंगी rel_something
)।
यदि इसमें केवल दो माता-पिता के PKs शामिल हैं (जो तार्किक n :: n संबंध को हल करता है जो तार्किक स्तर पर एक इकाई के रूप में मौजूद नहीं है, एक भौतिक तालिका में), तो वह एक सहयोगी तालिका है । हां, आमतौर पर नाम दो मूल तालिका नामों का एक संयोजन है।
ध्यान दें कि इस तरह के मामले Verb Phrase पर लागू होते हैं, और इसे माता-पिता से माता-पिता तक पढ़ा जाता है, बच्चे की मेज की अनदेखी करना, क्योंकि जीवन में इसका एकमात्र उद्देश्य दो माता-पिता से संबंधित है।
Diagram_C
अगर ऐसा है नहीं एक साहचर्य तालिका (यानी। दो पीकेएस के अलावा, यह डेटा शामिल हैं), तो यह उचित रूप से नाम दें, और क्रिया वाक्यांश इसे करने के लिए, रिश्ते के अंत में नहीं माता पिता लागू होते हैं।
Diagram_D
यदि आप दो user_product
तालिकाओं के साथ समाप्त होते हैं , तो यह एक बहुत जोर से संकेत है कि आपने डेटा को सामान्य नहीं किया है। तो कुछ कदम पीछे जाएं और ऐसा करें, और तालिकाओं को सही और लगातार नाम दें। नाम फिर खुद को हल करेंगे।
नामकरण परंपरा
किसी भी मदद की बहुत सराहना की जाती है और अगर वहाँ कुछ नामकरण सम्मेलन मानक है कि आप लोग सलाह देते हैं, तो लिंक करने के लिए स्वतंत्र महसूस करें।
आप जो कर रहे हैं वह बहुत महत्वपूर्ण है, और यह हर स्तर पर उपयोग और समझने में आसानी को प्रभावित करेगा। इसलिए शुरुआत में जितना संभव हो उतना समझ हासिल करना अच्छा है। जब तक आप SQL में कोडिंग शुरू नहीं करेंगे, तब तक इसमें से अधिकांश की प्रासंगिकता स्पष्ट नहीं होगी।
केस एड्रेस करने वाला पहला आइटम है। सभी कैप्स अस्वीकार्य हैं। मिश्रित मामला सामान्य है, खासकर यदि टेबल उपयोगकर्ताओं द्वारा सीधे सुलभ हैं। मेरे डेटा मॉडल देखें। ध्यान दें कि जब साधक कुछ डीएनएसडीसी का उपयोग कर रहा है, जिसमें केवल लोअरकेस है, तो मैं वह देता हूं, जिस स्थिति में मैं अंडरस्कोर (आपके उदाहरण के अनुसार) शामिल करता हूं।
डेटा फ़ोकस बनाए रखें , एप्लिकेशन या उपयोग फ़ोकस नहीं। यह सब 2011 के बाद है, हमारे पास 1984 से ओपन आर्किटेक्चर है, और डेटाबेस को उन ऐप से स्वतंत्र माना जाता है जो उनका उपयोग करते हैं।
इस तरह, जैसे-जैसे वे बढ़ते हैं, और एक से अधिक ऐप उनका उपयोग करते हैं, नामकरण सार्थक रहेगा, और किसी भी सुधार की आवश्यकता नहीं है। (डेटाबेस जो एक ही ऐप में पूरी तरह से एम्बेडेड हैं, डेटाबेस नहीं हैं।) डेटा तत्वों को डेटा के रूप में नाम दें।
बहुत विचारशील हो, और तालिकाओं और स्तंभों को बहुत सटीक रूप से नाम दें । UpdatedDate
यदि यह DATETIME
डेटाटाइप है, तो उपयोग न करें UpdatedDtm
। _description
अगर इसमें डोज़ है तो इसका इस्तेमाल न करें ।
डेटाबेस में संगत होना महत्वपूर्ण है । का प्रयोग न करें NumProduct
एक ही स्थान पर उत्पादों की संख्या और इंगित करने के लिए ItemNo
या ItemNum
किसी अन्य स्थान पर आइटम की संख्या का संकेत करने के लिए। लगातार NumSomething
संख्याओं के लिए, और SomethingNo
या SomethingId
पहचानकर्ताओं के लिए उपयोग करें ।
स्तंभ नाम को किसी तालिका नाम या लघु कोड के साथ उपसर्ग न करें, जैसे कि user_first_name
। SQL पहले से ही क्वालीफायर के रूप में टैबलेन के लिए प्रदान करता है:
table_name.column_name -- notice the dot
अपवाद:
पहला अपवाद पीके के लिए है, उन्हें विशेष हैंडलिंग की आवश्यकता होती है क्योंकि आप उन्हें हर समय, जॉन्स में कोड करते हैं, और आप चाहते हैं कि डेटा कॉलम से बाहर खड़े हों। हमेशा उपयोग user_id
, कभी नहीं id
।
- ध्यान दें कि यह एक उपसर्ग के रूप में उपयोग किया जाने वाला एक तालिका नाम नहीं है, लेकिन कुंजी के घटक के लिए एक उचित वर्णनात्मक नाम है:
user_id
वह स्तंभ है जो किसी उपयोगकर्ता की पहचान करता id
है, user
तालिका का नहीं।
- (रिकॉर्ड फाइलिंग सिस्टम में पाठ्यक्रम को छोड़कर, जहां फाइलें सरोगेट्स द्वारा एक्सेस की जाती हैं और कोई संबंधपरक कुंजी नहीं हैं, वहां वे एक और एक ही चीज हैं)।
- हमेशा एक ही नाम का उपयोग कुंजी कॉलम के लिए करें जहां पीके को एफके के रूप में (माइग्रेट) किया जाता है।
- इसलिए
user_product
तालिका user_id
में इसके पीके के एक घटक के रूप में होगा (user_id, product_no)
।
- जब आप कोडिंग शुरू करेंगे तो इसकी प्रासंगिकता स्पष्ट हो जाएगी। सबसे पहले,
id
कई तालिकाओं के साथ, SQL कोडिंग में मिलाना आसान है। दूसरा, किसी और को जो शुरुआती कोडर का कोई पता नहीं है कि वह क्या करने की कोशिश कर रहा था। दोनों को रोकने के लिए आसान है, अगर कुंजी स्तंभ ऊपर के रूप में माना जाता है।
दूसरा अपवाद वह है जहां एक से अधिक FK समान पेरेंट टेबल टेबल का संदर्भ देते हैं, जो बच्चे में किया जाता है। संबंधपरक मॉडल के अनुसार , अर्थ या उपयोग को अलग करने के लिए भूमिका नाम का उपयोग करें, जैसे। AssemblyCode
और ComponentCode
दो के लिए PartCodes
। और उस मामले में, उनमें से एक के लिए उदासीन का उपयोग न करें PartCode
। सटीक होना।
Diagram_E
उपसर्ग
जहाँ आपके पास 100 से अधिक तालिकाएँ हैं, विषय क्षेत्र के साथ तालिका नामों को उपसर्ग करें:
REF_
OE_
ऑर्डर एंट्री क्लस्टर के लिए संदर्भ तालिका के लिए, आदि।
केवल भौतिक स्तर पर, तार्किक नहीं (यह मॉडल को अव्यवस्थित करता है)।
प्रत्यय
कभी भी तालिकाओं पर प्रत्ययों का उपयोग न करें, और हमेशा हर चीज पर प्रत्ययों का उपयोग करें। डेटाबेस के तार्किक, सामान्य उपयोग में इसका मतलब है कि कोई अंडरस्कोर नहीं हैं; लेकिन प्रशासनिक पक्ष पर, एक विभाजक के रूप में अंडरस्कोर का उपयोग किया जाता है:
_V
देखें ( TableName
सामने मुख्य के साथ )
_fk
विदेशी कुंजी (बाधा नाम, स्तंभ नाम नहीं)
_cac
कैश
_seg
सेगमेंट
_tr
लेनदेन (संग्रहीत या फ़ंक्शन)
_fn
फ़ंक्शन (गैर-लेन-देन), आदि।
प्रारूप तालिका या FK नाम, एक अंडरस्कोर, और एक्शन नाम, एक अंडरस्कोर और अंत में प्रत्यय है।
यह वास्तव में महत्वपूर्ण है क्योंकि जब सर्वर आपको एक त्रुटि संदेश देता है:
____blah blah blah error on object_name
आप वास्तव में जानते हैं कि किस वस्तु का उल्लंघन किया गया था, और वह क्या करने की कोशिश कर रही थी:
____blah blah blah error on Customer_Add_tr
विदेशी कुंजी (बाधा, स्तंभ नहीं)। एक FK के लिए सबसे अच्छा नामकरण Verb Phrase ("प्रत्येक" और कार्डिनलिटी को घटाता है) का उपयोग करना है।
Customer_Initiates_SalesOrder_fk
Part_Comprises_Component_fk
Part_IsConsumedIn_Assembly_fk
Parent_Child_fk
अनुक्रम का उपयोग करें , ऐसा नहीं Child_Parent_fk
है क्योंकि (ए) यह सही प्रकार के क्रम में दिखाई देता है जब आप उन्हें ढूंढ रहे हैं और (बी) हम हमेशा बच्चे को शामिल करते हैं, जो हम अनुमान लगा रहे हैं, वह कौन सा है। त्रुटि संदेश तब आनंदमय है:
____ Foreign key violation on Vendor_Offers_PartVendor_fk
।
यह उन लोगों के लिए अच्छी तरह से काम करता है जो अपने डेटा को मॉडल करने के लिए परेशान हैं, जहां वर्ब वाक्यांश की पहचान की गई है। बाकी के लिए, रिकॉर्ड फाइलिंग सिस्टम, आदि का उपयोग करें Parent_Child_fk
।
संकेत विशेष हैं, इसलिए उनके पास अपने स्वयं के नामकरण सम्मेलन है, जो क्रम में बना है , प्रत्येक वर्ण स्थिति 1 से 3 तक है:
U
अनोखा, या _
गैर-अद्वितीय
C
क्लस्टर के लिए, या _
गैर-क्लस्टर
_
विभाजक के लिए
शेष के लिए:
ध्यान दें कि सूचकांक नाम में तालिका नाम की आवश्यकता नहीं है, क्योंकि यह हमेशा के रूप में दिखाता हैtable_name.index_name.
तो जब Customer.UC_CustomerId
या Product.U__AK
एक त्रुटि संदेश में प्रकट होता है, तो यह आपको कुछ सार्थक बताता है। जब आप किसी तालिका पर सूचक देखते हैं, तो आप उन्हें आसानी से अलग कर सकते हैं।
किसी योग्य और पेशेवर को खोजें और उनका पालन करें। उनके डिजाइनों को देखें, और उनके द्वारा उपयोग किए जाने वाले नामकरण सम्मेलनों का सावधानीपूर्वक अध्ययन करें। उन चीजों के बारे में उनसे विशिष्ट प्रश्न पूछें जिन्हें आप नहीं समझते हैं। इसके विपरीत, ऐसे किसी भी व्यक्ति से नरक की तरह दौड़ें जो नामकरण परंपराओं या मानकों के लिए बहुत कम संबंध प्रदर्शित करता है। यहाँ कुछ आप शुरू करने के लिए है:
- उनमें उपरोक्त सभी के वास्तविक उदाहरण हैं। इस थ्रेड में पुनः नामकरण प्रश्न पूछें।
- बेशक, मॉडल नामकरण सम्मेलनों से परे कई अन्य मानकों को लागू करते हैं ; आप या तो अभी के लिए उन्हें अनदेखा कर सकते हैं, या विशिष्ट नए प्रश्न पूछने के लिए स्वतंत्र महसूस कर सकते हैं ।
- वे कई पृष्ठ हैं, स्टैक ओवरफ्लो में इनलाइन छवि समर्थन पक्षियों के लिए है, और वे विभिन्न ब्राउज़रों पर लगातार लोड नहीं करते हैं; इसलिए आपको लिंक पर क्लिक करना होगा।
- ध्यान दें कि पीडीएफ फाइलों में पूर्ण नेविगेशन है, इसलिए नीले ग्लास बटन, या उन वस्तुओं पर क्लिक करें जहां विस्तार की पहचान की गई है:
- पाठक जो रिलेशनल मॉडलिंग स्टैंडर्ड से अपरिचित हैं, उन्हें IDEF1X नोटेशन मददगार लग सकता है।
ऑर्डर-एंट्री और इन्वेंट्री मानक-मानक पते के साथ
PHP / MyNonSQL के लिए सरल अंतर-कार्यालय बुलेटिन प्रणाली
पूर्ण टेम्पोरल क्षमता के साथ सेंसर की निगरानी
सवालों के जवाब
टिप्पणी स्थान में इसका यथोचित उत्तर नहीं दिया जा सकता है।
लैरी लस्टिग:
... यहां तक कि सबसे तुच्छ उदाहरण से पता चलता है ...
यदि किसी ग्राहक के पास शून्य से कई उत्पाद हैं और एक उत्पाद में एक से कई घटक हैं और एक घटक में एक से कई आपूर्तिकर्ता हैं और एक आपूर्तिकर्ता शून्य बेचता है -कई घटकों और एक SalesRep के पास एक से कई ग्राहक होते हैं जो "प्राकृतिक" नाम रखते हैं जो ग्राहक, उत्पाद, घटक और आपूर्तिकर्ता की तालिकाओं को कहते हैं?
आपकी टिप्पणी में दो प्रमुख समस्याएं हैं:
आप अपने उदाहरण को "सबसे तुच्छ" घोषित करते हैं, हालांकि, यह कुछ भी है लेकिन उस तरह के विरोधाभास के साथ, यदि आप गंभीर रूप से सक्षम हैं, तो मैं अनिश्चित हूं।
उस "तुच्छ" अटकलें में कई सकल सामान्यीकरण (डीबी डिज़ाइन) त्रुटियां हैं।
जब तक आप उन को ठीक नहीं करते, वे अप्राकृतिक और असामान्य हैं, और उनका कोई मतलब नहीं है। आप उन्हें असामान्य नाम, असामान्य 2, आदि नाम दे सकते हैं।
आपके पास "आपूर्तिकर्ता" हैं जो कुछ भी आपूर्ति नहीं करते हैं; परिपत्र संदर्भ (अवैध, और अनावश्यक); बिना किसी व्यावसायिक उपकरण (जैसे इनवॉइस या सेल्सऑडर) के बिना उत्पादों को खरीदने वाले ग्राहक खरीद के लिए एक आधार के रूप में (या ग्राहकों के अपने "उत्पाद?"); अनसुलझे कई-से-कई रिश्ते; आदि।
एक बार जब इसे सामान्यीकृत किया जाता है, और आवश्यक तालिकाओं की पहचान की जाती है, तो उनके नाम स्पष्ट हो जाएंगे। सहज रूप में।
किसी भी स्थिति में, मैं आपकी क्वेरी की सेवा करने का प्रयास करूंगा। जिसका अर्थ है कि मुझे इसके लिए कुछ अर्थ जोड़ना होगा, न कि आपका मतलब जानने के लिए, इसलिए कृपया मेरे साथ रहें। सकल त्रुटियों को सूचीबद्ध करने के लिए बहुत अधिक हैं, और अतिरिक्त विनिर्देश दिए गए हैं, मुझे विश्वास नहीं है कि मैंने उन सभी को सही किया है।
मैं मानूंगा कि यदि उत्पाद घटकों से बना है, तो उत्पाद एक विधानसभा है, और घटकों का उपयोग एक से अधिक विधानसभा में किया जाता है।
इसके अलावा, चूंकि "आपूर्तिकर्ता शून्य-से-कई घटकों को बेचता है", कि वे उत्पादों या विधानसभाओं को नहीं बेचते हैं, वे केवल घटक बेचते हैं।
अटकलें बनाम सामान्यीकृत मॉडल
यदि आप जागरूक नहीं हैं, तो वर्ग कोनों (स्वतंत्र) और गोल कोनों (डिपेंडेंट) के बीच का अंतर महत्वपूर्ण है, कृपया आईडीईएफ 1 एक्स नोटेशन लिंक देखें। इसी तरह धराशायी लाइनों (पहचानने) बनाम धराशायी लाइनों (गैर-पहचान)।
... "नेचुरल" नाम ग्राहकों, उत्पादों, घटकों और आपूर्तिकर्ताओं को रखने वाली तालिकाओं के नाम क्या हैं?
- ग्राहक
- उत्पाद
- घटक (या, असेंबलीकम्पोनेंट, उन लोगों के लिए जो महसूस करते हैं कि एक तथ्य दूसरे की पहचान करता है)
- प्रदायक
अब जब मैंने तालिकाओं को हल कर लिया है, तो मैं आपकी समस्या को नहीं समझता। शायद आप एक विशिष्ट प्रश्न पोस्ट कर सकते हैं ।
वोटकॉफी:
आप अपने उदाहरण में पोस्ट किए गए परिदृश्य रॉनिस को कैसे संभाल रहे हैं जहां 2 टेबल (user_likes_product, user_bought_product) के बीच कई संबंध मौजूद हैं? मुझे गलतफहमी हो सकती है, लेकिन ऐसा लगता है कि आपके द्वारा दिए गए सम्मेलन का उपयोग करके डुप्लिकेट तालिका नामों में परिणाम होगा।
मान लें कि कोई सामान्यीकरण त्रुटियां नहीं हैं, User likes Product
एक विधेय है, तालिका नहीं है। उन्हें भ्रमित मत करो। मेरे उत्तर का संदर्भ लें, जहां यह विषय, क्रिया, और विधेय से संबंधित है, और लैरी के तुरंत ऊपर मेरी प्रतिक्रिया।
प्रत्येक तालिका में तथ्यों का एक समूह होता है (प्रत्येक पंक्ति एक तथ्य है)। विधेय (या प्रस्ताव), तथ्य नहीं हैं, वे सच हो सकते हैं या नहीं भी हो सकते हैं।
रिलेशनल मॉडल सबसे पहले आदेश विधेय पथरी (सामान्यतः प्रथम आदेश तर्क के रूप में जाना जाता है) पर आधारित है। एक विधेय सरल, सटीक अंग्रेजी में एकल-खंड वाक्य है, जो सही या गलत का मूल्यांकन करता है।
इसके अलावा, प्रत्येक तालिका प्रतिनिधित्व करती है, या एक नहीं , कई Predicates का कार्यान्वयन है ।
एक क्वेरी एक Predicate का परीक्षण है (या एक साथ कई प्रेडिकेट्स, एक साथ जंजीर) जिसके परिणामस्वरूप सच (तथ्य मौजूद है) या गलत (तथ्य मौजूद नहीं है)।
इस प्रकार, तालिकाओं के नाम, मेरे उत्तर (नामकरण परंपराओं) में विस्तृत होने चाहिए, पंक्ति के लिए, तथ्य, और विधेयकों को प्रलेखित किया जाना चाहिए (हर तरह से, यह डेटाबेस प्रलेखन का हिस्सा है), लेकिन Predicates की एक अलग सूची के रूप में ।
यह एक सुझाव नहीं है कि वे महत्वपूर्ण नहीं हैं। वे बहुत महत्वपूर्ण हैं, लेकिन मैं यहां नहीं लिखूंगा।
जल्दी से, फिर। चूंकि रिलेशनल मॉडल FOPC पर स्थापित है, इसलिए पूरे डेटाबेस को FOPC घोषणाओं का एक सेट, Predicates का एक सेट कहा जा सकता है। लेकिन (ए) कई प्रकार के Predicates हैं, और (b) एक टेबल एक Predicate का प्रतिनिधित्व नहीं करता है (यह कई Predicates का भौतिक कार्यान्वयन है , और विभिन्न प्रकार के Predicates का)।
इसलिए "" जो "प्रतिनिधित्व करता है" के लिए तालिका का नामकरण एक बेतुका अवधारणा है।
"सिद्धांतकारों" को केवल कुछ ही विधेयकों के बारे में पता है, वे यह नहीं समझते हैं कि चूंकि RM को FOL पर स्थापित किया गया था, इसलिए पूरा डेटाबेस Predicates और विभिन्न प्रकारों का एक सेट है।
और निश्चित रूप से, वे उन लोगों में से बेतुका चुनते हैं जिन्हें वे जानते हैं EXISTING_PERSON
:; PERSON_IS_CALLED
। यदि यह इतना दुखी नहीं होता, तो यह प्रफुल्लित करने वाला होता।
यह भी ध्यान दें कि मानक या परमाणु तालिका नाम (पंक्ति का नामकरण) सभी क्रियाओं के लिए शानदार ढंग से काम करता है (तालिका से जुड़ी सभी Predicates सहित)। इसके विपरीत, मुहावरा "तालिका विधेय का प्रतिनिधित्व करती है" नाम नहीं हो सकता। जो "सिद्धांतकारों" के लिए ठीक है, जो प्रेडिकेट्स के बारे में बहुत कम समझते हैं, लेकिन मंदबुद्धि हैं।
डेटा मॉडल के लिए प्रासंगिक हैं, जो मॉडल में व्यक्त किए गए हैं, वे दो आदेशों के हैं।
Unary Predicate
पहला सेट आरेखीय है , पाठ नहीं: संकेतन स्वयं । इनमें विभिन्न अस्तित्व शामिल हैं; बाधा उन्मुख; और विवरणक (गुण) विधेय।
- बेशक, इसका मतलब है कि केवल वे जो मानक डेटा मॉडल को 'पढ़' सकते हैं, वे उन विधेयकों को पढ़ सकते हैं। यही कारण है कि "सिद्धांतवादी", जो अपनी पाठ-मात्र मानसिकता से बुरी तरह से अपंग हैं, डेटा मॉडल नहीं पढ़ सकते हैं, इसलिए वे अपने पूर्व-1984 के पाठ-मात्र मानसिकता से चिपके रहते हैं।
बाइनरी प्रेडिक्टेट
दूसरा सेट वह है जो तथ्यों के बीच संबंध बनाता है । यह संबंध रेखा है। Verb Phrase (ऊपर दिया गया) Predicate, प्रस्ताव को पहचानता है , जिसे लागू किया गया है (जिसे क्वेरी के साथ परीक्षण किया जा सकता है)। इससे अधिक स्पष्ट नहीं हो सकता है।
- इसलिए, जो मानक डेटा मॉडल में धाराप्रवाह है, सभी प्रासंगिक जो प्रासंगिक हैं , मॉडल में प्रलेखित हैं। उन्हें Predicates (लेकिन उपयोगकर्ता, जो डेटा मॉडल से सब कुछ नहीं पढ़ सकते हैं, करते हैं) की एक अलग सूची की आवश्यकता नहीं है।)
यहां एक डेटा मॉडल है , जहां मैंने Predicates सूचीबद्ध किया है। मैंने उस उदाहरण को चुना है क्योंकि यह अस्तित्ववादी, आदि को दर्शाता है, जो कि, साथ ही साथ रिलेशनशिप वालों को भी सूचीबद्ध करता है, केवल प्रेडिक्ट्स सूचीबद्ध नहीं हैं। यहां, साधक के सीखने के स्तर के कारण, मैं उसे एक उपयोगकर्ता के रूप में मान रहा हूं।
इसलिए दो माता-पिता की तालिकाओं के बीच एक से अधिक बाल तालिका की घटना कोई समस्या नहीं है, बस उन्हें नाम दें जैसे कि अस्तित्ववादी तथ्य उनकी सामग्री को पुन: प्रस्तुत करते हैं, और नामों को सामान्य करते हैं।
एसोसिएटिव टेबल्स के लिए रिश्तों के नाम के लिए मैंने वर्ब वाक्यांशों के लिए जो नियम दिए थे, वे यहां लागू होते हैं। सारांश में दी गई सभी बिंदुओं को शामिल करते हुए, यहाँ एक बनाम बनाम तालिका चर्चा है।
विधेय और कैसे के समुचित उपयोग के लिए उन्हें (जो यहाँ टिप्पणी करने के लिए जवाब की है कि काफी एक अलग संदर्भ है) का उपयोग करने के फिर से एक अच्छा संक्षिप्त विवरण के लिए देखें: इस जवाब है, और के लिए नीचे स्क्रॉल विधेय अनुभाग।
चार्ल्स बर्न्स:
अनुक्रम से, मेरा मतलब था कि ओरेकल-शैली की वस्तु विशुद्ध रूप से एक संख्या और उसके अगले को कुछ नियम के अनुसार उपयोग करती थी (उदाहरण के लिए "1 जोड़ें")। चूंकि ओरेकल में ऑटो-आईडी तालिकाओं का अभाव है, इसलिए मेरा विशिष्ट उपयोग तालिका पीके के लिए अद्वितीय आईडी तैयार करना है। INSERT INTO foo (id, somedata) VALUES (foo_s.nextval, "data" ...)
ठीक है, जिसे हम कुंजी या नेक्स्ट टेबल कहते हैं। इसे ऐसे नाम दें। यदि आपके पास विषय है, तो यह इंगित करने के लिए COM_NextKey का उपयोग करें कि यह डेटाबेस में सामान्य है।
Btw, कि चाबियाँ बनाने की एक बहुत ही खराब विधि है। बिल्कुल भी स्केलेबल नहीं है, लेकिन फिर ओरेकल के प्रदर्शन के साथ, यह शायद "बस ठीक है"। इसके अलावा, यह इंगित करता है कि आपका डेटाबेस सरोगेट्स से भरा है, उन क्षेत्रों में संबंधपरक नहीं है। जिसका अर्थ है बेहद खराब प्रदर्शन और अखंडता की कमी।
primarily opinion-based
असत्य है।