หลักการตั้งชื่อสำหรับข้อ จำกัด เฉพาะ


129

หลักการตั้งชื่อมีความสำคัญและคีย์หลักและคีย์ต่างประเทศมีการใช้กันทั่วไปและมีแบบแผนชัดเจน ( PK_TableและFK_Table_ReferencedTableตามลำดับ) การIX_Table_Columnตั้งชื่อดัชนียังเป็นมาตรฐานที่เป็นธรรม

สิ่งที่เกี่ยวกับข้อ จำกัด UNIQUE? มีหลักการตั้งชื่อที่ยอมรับกันทั่วไปสำหรับข้อ จำกัด นี้หรือไม่? ผมเคยเห็นUK_TableName_Column, UQ_TableName_ColumnและคนแนะนำAX_TableName_Column- ฉันไม่ทราบว่ามาจาก

ฉันมักจะใช้UQแต่ฉันไม่ชอบมันเป็นพิเศษและฉันไม่ชอบที่จะปกป้องการเลือกใช้มันกับUKผู้สนับสนุน

ฉันแค่อยากจะดูว่ามีความเห็นตรงกันในการตั้งชื่อที่แพร่หลายมากที่สุดหรือไม่หรือเหตุผลที่ดีว่าเหตุใดจึงมีเหตุผลมากกว่าข้ออื่น ๆ


1
@ มิทช์เหตุผลใด ๆ ฉันทำเกินไป Uแต่ผมมักจะถามตัวเองว่าทำไมไม่มีใครเพียงแค่ใช้ เป็นสิ่งที่Qยืนสำหรับ?
Kirk Broadhurst

1
คุณสามารถถามคำถามเดียวกันเกี่ยวกับ IX สำหรับ IndeX ... ทำไมไม่แค่ฉันล่ะ?
Chris J

3
"UQ" เป็นเพียงคำย่อของ "UNIQUE" เหตุผลของตัวอักษรสองตัวนั้นโดยพื้นฐานแล้วมันเป็นชุดที่นำหน้าโดย "PK"
Mark Cidade

2
โดยส่วนตัวแล้วฉันลงเอยด้วยการใช้ UX_ * สำหรับ "Unique indeX" เพื่อเป็นการเคารพค่าเริ่มต้นของ IX สำหรับ "IndeX" ฉันไม่ชอบ UK_ เป็นพิเศษเพราะฉันมาจากสหราชอาณาจักร ฉันสามารถชักชวน AK ได้ถ้านั่นคือสิ่งที่อินเทอร์เน็ตชอบ
Tim Abell

@KirkBroadhurst ฉันไม่เคยเห็นการประชุมแบบนี้ แต่เนื่องจากการโหวตเพิ่มขึ้นจึงต้องเป็นเรื่องธรรมดาและตอบสนองวัตถุประสงค์ได้ดี แต่การมีคีย์ต่างประเทศชื่อ FK_03 นั้นไม่ค่อยมีประโยชน์ตั้งชื่อมันจะดีกว่าFK_TargetTable_SourceTableไหม คุณช่วยอธิบายให้ละเอียดได้ไหม
CodingYoshi

คำตอบ:


56

ความคิดของฉันไม่ใช่กุญแจสำคัญ: มันเป็นข้อ จำกัด

มันสามารถนำมาใช้เป็นกุญแจสำคัญของหลักสูตรและไม่ซ้ำกันระบุแถว แต่มันไม่ได้เป็นกุญแจสำคัญ

ตัวอย่างเช่นคีย์คือ "ThingID" ซึ่งเป็นคีย์ตัวแทนที่ใช้แทน ThingName ซึ่งเป็นคีย์ธรรมชาติ คุณยังต้องจำกัด ThingName: แม้ว่าจะไม่ถูกใช้เป็นคีย์

ฉันจะใช้ UQ และ UQC ด้วย (ถ้าเป็นคลัสเตอร์)

คุณสามารถใช้ดัชนีเฉพาะแทนและไปที่ "IXU" ด้วยตรรกะที่ใช้ดัชนีก็เป็นกุญแจสำคัญเช่นกัน แต่เมื่อไม่ซ้ำกันเท่านั้น มิฉะนั้นจะเป็นดัชนี ดังนั้นเราจะเริ่มต้นด้วยIK_columnnameดัชนีที่ไม่ซ้ำกันและIX_columnnameสำหรับดัชนีที่ไม่ซ้ำกัน มหัศจรรย์

และข้อแตกต่างเพียงอย่างเดียวระหว่างข้อ จำกัด เฉพาะและดัชนีที่ไม่ซ้ำกันคือคอลัมน์ INCLUDE

แก้ไข: กุมภาพันธ์ 2013 ตั้งแต่ SQL Server 2008 ดัชนีสามารถมีตัวกรองได้เช่นกัน ข้อ จำกัด ไม่สามารถ

ดังนั้นจึงเป็นหนึ่งใน

  • ยึดติดกับ UQ ตามส่วนที่เหลือของดาวเคราะห์ที่ใช้ SQL
  • ใช้ IK สำหรับดัชนีเฉพาะ (IKC สำหรับคลัสเตอร์ด้วย) เพื่อให้สอดคล้องกัน ...

1
คุณต้องการ "IXU" มากกว่า "UIX" หรือไม่
Hamish Grubijan


133

หลักการตั้งชื่อของฉันสำหรับดัชนีและข้อ จำกัด :

  • คีย์หลัก _PK
  • ดัชนี / ข้อ จำกัด เฉพาะ _AK {xx}
  • ดัชนีที่ไม่ซ้ำกัน _IX {xx}
  • ตรวจสอบข้อ จำกัด _CK {xx}
  • ข้อ จำกัด เริ่มต้น _DF {xx}
  • ข้อ จำกัด ของคีย์ต่างประเทศ _FK {xx}

โดยที่ {xx} คือหมายเลขลำดับ 2 หลักโดยเริ่มต้นที่ 01 สำหรับข้อ จำกัด แต่ละประเภทต่อตาราง คีย์หลักไม่ได้รับหมายเลขลำดับเนื่องจากสามารถมีได้เพียงหมายเลขเดียว ความหมายต่อท้ายอัลฟ่า 2 ตัวคือ:

  • PK: คีย์หลัก
  • AK: คีย์สำรอง
  • FK: คีย์ต่างประเทศ
  • IX: IndeX
  • CK: ChecK
  • DF: DeFault

โดยทั่วไปฉันต้องการจัดกลุ่มข้อมูลเมตาดาต้า / ระบบแค็ตตาล็อกตามออบเจ็กต์ควบคุมมากกว่าตามประเภทอ็อบเจ็กต์


10
AK: คีย์สำรองคือสิ่งที่พื้นผิวการออกแบบของ SQL Server Data tools 2012 เรียกพวกเขาด้วย
Alex KeySmith

15
@AlexKeySmith: ขอบคุณที่อธิบายว่าทำไม Microsoft ถึงใช้ AK สำหรับสิ่งนี้ !!
TJ Crowder

ไม่มีปัญหา @TJCrowder :-)
Alex KeySmith

@TJCrowder ในโลกของการสร้างแบบจำลองความสัมพันธ์เอนทิตี / ฐานข้อมูลเป็นคีย์สำรองเนื่องจากเช่นเดียวกับคีย์หลักชุดคอลัมน์ที่ประกอบด้วยคีย์สำรองจะต้องไม่ซ้ำกันดังนั้นจึงให้ข้อมูลประจำตัว [ทางเลือก] สำหรับแถว / ทูเพิล
Nicholas Carey

@NicholasCarey: ไม่ฉันเข้าใจแล้ว - ทันทีที่ฉันเห็นความคิดเห็นของอเล็กซ์แสงก็สว่างขึ้น :-)
TJ Crowder

5

ฉันใช้ UQ K ในสหราชอาณาจักรทำให้ฉันนึกถึง K ที่ใช้ใน PK และ FK หลังจากที่ฉันคิดถึงสหราชอาณาจักรแล้ว แดกดันว่านี่ควรเป็นคำนำหน้าสำหรับ UNIQUE เมื่อสหราชอาณาจักรเปิดตัวสมาคมอื่น ๆ มากมาย =)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.