2011-11-28 20 views
7

मैं मेज विजेट और टेबल व्यक्तियोंSqlServer पहचान नामकरण सम्मेलन

उन दोनों को शामिल पहचान स्तंभ (बीज)

क्या पहचान स्तंभ के लिए सिफारिश की नामकरण सम्मेलन है?

Widgets.Id 
Persons.Id 

या

Widgets.WidgetId 
Persons.PersonId 

पूर्व में वहाँ फायदे/नुकसान है उत्तरार्द्ध से तुलना:

यह "id" (दोनों तालिकाओं के लिए) क्या है?

+2

यह पहले से पूछा गया है [प्रोग्रामर एसई] (http://programmers.stackexchange.com/questions/114728/why-is-naming-a-tables-primary-key-column-id-Considered-bad- अभ्यास), दुर्भाग्य से मैं इसे वहां नहीं भेज सकता। यह स्टैक ओवरफ़्लो के लिए बहुत व्यापक है। –

+0

@TimPost हाय, फिर भी न समझने के कारण है कि आप इसे बंद कर दिया .... मैं सिर्फ एक प्रश्न पूछा, क्योंकि मैं एक दुविधा .... एक बहस शुरू करने के लिए मतलब नहीं था ... –

+0

@RoyiNamir यह एक बहस कभी नहीं था। इस प्रकार स्टैक एक्सचेंज नेटवर्क काम करता है। तुम ठीक हो। – jcolebrand

उत्तर

6

यह एक मामला है जहाँ मैं अतिरेक के लिए जाना चाहते हैं और Thing.ThingID है
नहीं तो आप जब आप शामिल हों

नोट हर जगह यह अन्य नाम पर है: यह पहले से ही मौत के लिए और परे किया गया था programmers.se पर:
Why is naming a table's Primary Key column “Id” considered bad practice?

+0

जब मैं उनसे जुड़ता हूं तो मैं हमेशा अपनी टेबल को उपनाम करता हूं इसलिए मुझे इसे असुविधा के रूप में नहीं देखा जाता है। – Icarus

+0

@Icarus: aliasing * कॉलम * इसलिए आपके पास परिणाम सेट में दो बार आईडी नहीं है – gbn

+0

@gbn जब आप "उपनाम" कहते हैं, तो क्या आपका चयन कथन में है? –

3

इसके लिए सबसे अच्छा अभ्यास टेबल नाम के साथ पेश करना है।

यह कर देगा यह बहुत स्पष्ट है जब में शामिल होने के जो क्षेत्र आप SELECT सूची में बात कर रहे हैं।

यह भी आकस्मिक बुरा JOIN की स्थिति असंभव बना देता है, यानि कि

JOIN TableA ON ID = TableA.ID

एक नियम के रूप में टेबल में डुप्लीकेट फ़ील्ड नाम से बचा जाना चाहिए जब तक कि वे समान डेटा प्रतिनिधित्व करते हैं।

+0

दुर्घटनाग्रस्त तर्क तर्क एक बहुत अच्छा मुद्दा है। जब मैं शामिल होता हूं तो मैं हमेशा अपनी टेबल को उपनाम करता हूं लेकिन निश्चित रूप से यह संभावना है। – Icarus

3

पहचान स्तंभ में तालिका नाम का उपयोग करते हुए थोड़ा बेमानी है, लेकिन मैं इसे उपयोगी और अधिक वर्णनात्मक खासकर जब विदेशी कुंजी प्रदर्शन में शामिल होने के लिए लगता है। उदाहरण के लिए, जो बेहतर लगता है के लिए:

SELECT P.PersonID, P.FullName, W.WidgetID, W.WidgetName 
FROM Widgets W JOIN 
    PersonWidgets PW ON W.WidgetsID = PW.WidgetsID JOIN 
    Person P ON P.PersonID = PW.PersonID 

या

SELECT P.ID as PersonID, P.FullName, W.ID as WidgetID, W.WidgetName 
FROM Widgets W JOIN 
    PersonWidgets PW ON W.ID = PW.WidgetsID JOIN 
    Person P ON P.ID = PW.PersonID 

पहली क्वेरी अधिक स्पष्ट है और कम आकस्मिक मिलती है की ओर जाता है। यह आपकी SELECT सूची में उपनामों का उपयोग करने की आवश्यकता को भी समाप्त करता है।

संबंधित मुद्दे