ข้อ จำกัด ของฐานข้อมูลคืออะไร? [ปิด]


93

คำจำกัดความที่ชัดเจนของข้อ จำกัด ของฐานข้อมูลคืออะไร? เหตุใดข้อ จำกัด จึงมีความสำคัญสำหรับฐานข้อมูล ประเภทของข้อ จำกัด คืออะไร?


12
คำถามนี้มีคำตอบที่ชัดเจน มันไม่ "กว้างเกินไป" การโหวตเพิ่มและรายการโปรดจำนวนมากเผยให้เห็นว่าการโหวตมีประโยชน์ต่อผู้คนมากมายเพียงใด ฉันได้ทำความสะอาดถ้อยคำและเสนอชื่อให้เปิดใหม่แล้ว
La-comadreja

@BasilBourque คำถามนี้เป็นมากพอดีดีสำหรับโปรแกรมเมอร์ - มันจะเป็นได้อย่างรวดเร็วลงคะแนนและปิดโน่นดูmeta.programmers.stackexchange.com/questions/6483/...อ่านที่แนะนำ: สิ่งที่ไปใน Programmers.SE? คำแนะนำสำหรับ Stack Overflow
gnat

1
@gnat ในขณะที่หน้านั้นทำให้ฉันยังคงคลุมเครือเกี่ยวกับสิ่งที่เป็นหรือไม่อยู่ในหัวข้อสำหรับ Programmers Stack Exchange ฉันสามารถเข้าใจและเห็นด้วยกับเกณฑ์ขั้นต่ำของผู้เขียนโพสต์ที่อ่านบทความ Wikipedia ที่เกี่ยวข้องโดยตรงซึ่งให้ ภาพรวมแบบย่อหรือสรุปประเภทเดียวกันที่ร้องขอใน Stack Exchange
Basil Bourque

2
ชื่อเรื่องเป็นแบบกว้างและคำถามย่อยคือถามคำถามหลายข้อพร้อมกัน -_- TomTom, P ரதீப், greg-449, bummi และ Nit ต้องการอย่างไร? กรุณาอธิบาย. คุณสามารถถามเกี่ยวกับข้อ จำกัด ได้หรือไม่ ... ?
Lealo

แม้ว่าฉันจะเข้าใจความรู้สึกที่มีต่อคำถามที่ใช้กระดานและตามความคิดเห็นมากเกินไป แต่ฉันก็ไม่เห็นด้วยกับข้อกำหนดในการอ่านบทความวิกิพีเดียครั้งแรก ไม่มี "ภาพรวมแบบย่อหรือสรุปประเภทเดียวกัน" คำตอบที่ยอมรับจะให้คำตอบแบบย่อและตรงประเด็นมากกว่าลิงก์วิกิพีเดียด้านบน
ตลอดไป

คำตอบ:


118

ข้อ จำกัด เป็นส่วนหนึ่งของข้อกำหนดสกีมาฐานข้อมูล

ข้อ จำกัด มักจะเกี่ยวข้องกับตารางและสร้างด้วยคำสั่งCREATE CONSTRAINTหรือCREATE ASSERTIONSQL

พวกเขากำหนดคุณสมบัติบางอย่างที่ข้อมูลในฐานข้อมูลต้องเป็นไปตาม สามารถนำไปใช้กับคอลัมน์ทั้งตารางมากกว่าหนึ่งตารางหรือทั้งสคีมา ระบบฐานข้อมูลที่เชื่อถือได้ช่วยให้มั่นใจได้ว่ามีข้อ จำกัด อยู่ตลอดเวลา (ยกเว้นในธุรกรรมซึ่งเรียกว่าข้อ จำกัด รอการตัดบัญชี)

ข้อ จำกัด ทั่วไปคือ:

  • ไม่เป็นค่าว่าง - แต่ละค่าในคอลัมน์ต้องไม่เป็นโมฆะ
  • ไม่ซ้ำกัน - ค่าในคอลัมน์ที่ระบุต้องไม่ซ้ำกันสำหรับแต่ละแถวในตาราง
  • คีย์หลัก - ค่า (s) ในคอลัมน์ที่ระบุ (s) ต้องไม่ซ้ำกันในแต่ละแถวในตารางและไม่เป็นโมฆะ ; โดยปกติแต่ละตารางในฐานข้อมูลควรมีคีย์หลัก - ใช้เพื่อระบุระเบียนแต่ละรายการ
  • คีย์ต่างประเทศ - ค่าในคอลัมน์ที่ระบุต้องอ้างอิงระเบียนที่มีอยู่ในตารางอื่น (ผ่านคีย์หลักหรือข้อ จำกัด เฉพาะอื่น ๆ)
  • ตรวจสอบ - มีการระบุนิพจน์ซึ่งต้องประเมินเป็นจริงเพื่อให้ข้อ จำกัด เป็นที่พอใจ

3
+1 สำหรับการรวม PK ไม่ใช่ null null
gbn เมื่อ

+1 คุณยังสามารถขยายสถานการณ์คีย์ต่างประเทศและให้ลิงก์บางส่วนได้
Unreason

2
ตรวจสอบข้อ จำกัด ต้องไม่ประเมินเป็นเท็จ พวกเขาไม่จำเป็นต้องเป็นจริง ไม่ทราบก็ดีเช่นกัน
Martin Smith

2
ข้อ จำกัด ประเภทจะเป็นประเภทสามัญไม่ใช่หรือ?
Martin

1
แม้ว่าโดยปกติเราจะไม่เรียกว่าข้อ จำกัด แต่ฉันขอยืนยันว่าประเภทข้อมูลเป็นรูปแบบของข้อ จำกัด ถ้าฉันกำหนดบางสิ่งเป็น Int หรือวันที่เวลาสิ่งนั้นจะ จำกัด ประเภทของข้อมูลที่สามารถใส่ลงในฟิลด์ได้ การเลือกประเภทข้อมูลอย่างเหมาะสมเป็นส่วนสำคัญในการรับรองความสมบูรณ์ของข้อมูล
HLGEM

36

เพื่อให้เข้าใจว่าเหตุใดเราจึงต้องการข้อ จำกัด อันดับแรกคุณต้องเข้าใจคุณค่าของความสมบูรณ์ของข้อมูล

ความสมบูรณ์ของข้อมูลหมายถึงความถูกต้องของข้อมูล ข้อมูลของคุณถูกต้องหรือไม่ ข้อมูลของคุณแสดงถึงสิ่งที่คุณออกแบบไว้หรือไม่

คำถามแปลก ๆ ที่ฉันถามคุณอาจคิด แต่น่าเศร้าที่บ่อยเกินไปฐานข้อมูลเต็มไปด้วยข้อมูลขยะการอ้างอิงแถวในตารางอื่นที่ไม่ถูกต้องซึ่งหายไปนาน ... และค่าที่ไม่ได้มีความหมายอะไรกับตรรกะทางธุรกิจ ของคุณอีกต่อไป

ขยะทั้งหมดนี้ไม่ได้มีแนวโน้มที่จะลดประสิทธิภาพการทำงานของคุณเพียงอย่างเดียว แต่ยังเป็นระเบิดเวลาภายใต้ตรรกะของแอปพลิเคชันของคุณซึ่งในที่สุดจะดึงข้อมูลที่ไม่ได้ออกแบบมาให้เข้าใจ

ข้อ จำกัด คือกฎที่คุณสร้างขึ้นในเวลาออกแบบเพื่อป้องกันข้อมูลของคุณไม่ให้เสียหาย มันเป็นสิ่งสำคัญสำหรับการอยู่รอดของหัวใจลูกของคุณเป็นเวลานานของโซลูชันฐานข้อมูล โซลูชันของคุณจะสูญสลายไปตามกาลเวลาและการใช้งานที่หนักหน่วง

คุณต้องยอมรับว่าการออกแบบการออกแบบฐานข้อมูลของคุณเป็นเพียงจุดเริ่มต้นของโซลูชันของคุณ หลังจากนั้นมันจะต้องอยู่ (หวังว่า) เป็นเวลานานและอดทนต่อพฤติกรรม (แปลก ๆ ) ทุกประเภทของผู้ใช้ปลายทาง (เช่นแอปพลิเคชันไคลเอนต์) แต่ขั้นตอนการออกแบบในการพัฒนานี้มีความสำคัญอย่างยิ่งต่อความสำเร็จในระยะยาวของโซลูชันของคุณ! เคารพมันและให้ความสำคัญกับเวลาและความสนใจที่มันต้องการ

นักปราชญ์คนหนึ่งเคยกล่าวไว้ว่า"ข้อมูลต้องปกป้องตัวเอง!" . และนี่คือสิ่งที่มีข้อ จำกัด เป็นกฎที่ทำให้ข้อมูลในฐานข้อมูลของคุณถูกต้องมากที่สุด

มีหลายวิธีในการทำเช่นนี้ แต่โดยทั่วไปแล้วพวกเขาต้มลงไปที่:

  • ข้อ จำกัด ของคีย์ต่างประเทศน่าจะเป็นข้อ จำกัด ที่ใช้มากที่สุดและทำให้แน่ใจว่าการอ้างอิงไปยังตารางอื่น ๆ จะได้รับอนุญาตก็ต่อเมื่อมีแถวเป้าหมายที่จะอ้างอิงเท่านั้น นอกจากนี้ยังทำให้ไม่สามารถทำลายความสัมพันธ์ดังกล่าวได้โดยการลบแถวที่อ้างอิงซึ่งสร้างลิงก์ที่ตายแล้ว
  • ตรวจสอบข้อ จำกัดช่วยให้มั่นใจได้ว่าอนุญาตเฉพาะค่าเฉพาะในบางคอลัมน์ คุณสามารถสร้างข้อ จำกัด ที่อนุญาตให้ใช้คำว่า 'Yellow' หรือ 'Blue' ในคอลัมน์ VARCHAR เท่านั้น ค่าอื่น ๆ ทั้งหมดจะทำให้เกิดข้อผิดพลาด รับแนวคิดสำหรับการใช้ข้อ จำกัด ในการตรวจสอบตรวจสอบsys.check_constraintsมุมมองในฐานข้อมูลตัวอย่าง AdventureWorks
  • กฎใน SQL Server เป็นเพียงข้อ จำกัด ในการตรวจสอบที่ใช้ซ้ำได้ (ช่วยให้คุณรักษาไวยากรณ์จากที่เดียวและทำให้ง่ายต่อการปรับใช้ข้อ จำกัด ของคุณกับฐานข้อมูลอื่น)

ดังที่ฉันได้บอกไว้ที่นี่จะต้องใช้การพิจารณาอย่างละเอียดถี่ถ้วนเพื่อสร้างแนวทางการป้องกันที่ดีที่สุดและเหมาะสมที่สุดสำหรับการออกแบบฐานข้อมูลของคุณ ก่อนอื่นคุณต้องทราบถึงความเป็นไปได้และข้อ จำกัด ของประเภทข้อ จำกัด ต่างๆข้างต้น การอ่านเพิ่มเติมอาจรวมถึง:

ข้อ จำกัด สำคัญต่างประเทศ - Microsoft

ข้อ จำกัด ของคีย์ต่างประเทศ - w3schools

ตรวจสอบข้อ จำกัด

โชคดี! ;)


ในฐานะที่เป็นความคิดเห็นที่ไม่จำเป็นดูเหมือนว่ากฎกำลังถูกไมโครซอฟต์
gary

6

ข้อ จำกัด ไม่ใช่อะไรนอกจากกฎเกี่ยวกับข้อมูล ข้อมูลใดถูกต้องและข้อมูลใดไม่ถูกต้องสามารถกำหนดได้โดยใช้ข้อ จำกัด ดังนั้นจึงสามารถรักษาความสมบูรณ์ของข้อมูลได้ ต่อไปนี้เป็นข้อ จำกัด ที่ใช้กันอย่างแพร่หลาย:

  1. คีย์หลัก : ซึ่งระบุข้อมูลโดยไม่ซ้ำกัน หากมีการระบุข้อ จำกัด นี้สำหรับบางคอลัมน์เราจะไม่สามารถป้อนข้อมูลที่ซ้ำกันในคอลัมน์นั้นได้
  2. ตรวจสอบ : เช่นNOT NULL. ที่นี่เราสามารถระบุข้อมูลที่เราสามารถป้อนสำหรับคอลัมน์นั้นและสิ่งที่ไม่คาดหวังสำหรับคอลัมน์นั้น
  3. คีย์ต่างประเทศ : คีย์ต่างประเทศอ้างอิงไปยังแถวของตารางอื่น ดังนั้นข้อมูลที่อ้างถึงในตารางหนึ่งจากตารางอื่นจึงพร้อมใช้งานสำหรับตารางอ้างอิงเสมอ

3

สามารถใช้ข้อ จำกัด เพื่อบังคับใช้คุณสมบัติเฉพาะของข้อมูล ตัวอย่างง่ายๆคือการ จำกัด คอลัมน์ int ไว้ที่ค่า [0-100000] บทนำนี้ดูดี


3

ข้อ จำกัด กำหนดว่าค่าใดที่ใช้ได้กับข้อมูลในฐานข้อมูล ตัวอย่างเช่นคุณสามารถบังคับใช้ค่าที่ไม่เป็นโมฆะ ( NOT NULLข้อ จำกัด ) หรือว่ามีอยู่เป็นข้อ จำกัด เฉพาะในตารางอื่น ( FOREIGN KEYข้อ จำกัด ) หรือค่าที่ไม่ซ้ำกันภายในตารางนี้ ( UNIQUEข้อ จำกัด หรือPRIMARY KEYข้อ จำกัดอาจขึ้นอยู่กับความต้องการของคุณ ). สามารถใช้CHECKข้อ จำกัดทั่วไปเพิ่มเติมได้โดยใช้ข้อ จำกัด

MSDN เอกสารสำหรับ SQL Server 2008 จำกัดน่าจะเป็นสถานที่เริ่มต้นที่ดีที่สุดของคุณ


2
  1. UNIQUEข้อ จำกัด (ซึ่งPRIMARY KEYข้อ จำกัด เป็นตัวแปร) ตรวจสอบว่าค่าทั้งหมดของเขตข้อมูลที่ระบุไม่ซ้ำกันในตาราง นี่คือX- ข้อ จำกัด ของแกน (บันทึก)

  2. CHECKข้อ จำกัด (ซึ่งNOT NULLข้อ จำกัด เป็นตัวแปร) ตรวจสอบว่าเงื่อนไขบางอย่างมีไว้สำหรับนิพจน์เหนือฟิลด์ของเร็กคอร์ดเดียวกัน นี่คือY- ข้อ จำกัด ของแกน (ฟิลด์)

  3. FOREIGN KEYข้อ จำกัด ตรวจสอบว่าพบค่าของเขตข้อมูลระหว่างค่าของเขตข้อมูลในตารางอื่น นี่คือZ- ข้อ จำกัด ของแกน (ตาราง)


ข้อ จำกัด ที่ไม่ซ้ำกันและข้อ จำกัด ของคีย์ต่างประเทศสามารถเขียนได้โดยใช้CHECKข้อ จำกัด เหตุใดจึงจัดประเภทให้แตกต่างกัน เช่น " Y-axis" (อะไรก็ตามที่หมายถึง)
onedaywhen

2
@onedaywhen: คุณจะFOREIGN KEYใช้CHECKข้อ จำกัดโดยใช้อย่างไร?
Quassnoi

1
@onedaywhen: ลองสร้างตารางด้วยข้อ จำกัด นี้
Quassnoi

1
@oneday เมื่อ: มันยากมากที่จะลอง? คำแนะนำ: วิธีนี้ใช้ไม่ได้
Quassnoi

3
@onedaywhen: ข้อความค้นหาที่คุณเขียนไม่ได้สร้างข้อ จำกัด ในการตรวจสอบ เป็นเพียงSELECTแบบสอบถาม คุณไม่สามารถใช้เคียวรีย่อย (หรือโครงสร้างอื่นใดที่อ้างถึงค่านอกเรกคอร์ดปัจจุบัน) ในCHECKข้อ จำกัด ในSQL Server.
Quassnoi

2

ฐานข้อมูลคือการแสดงเชิงตรรกะทางคอมพิวเตอร์ของแบบจำลองแนวคิด (หรือธุรกิจ) ซึ่งประกอบด้วยชุดของกฎทางธุรกิจที่ไม่เป็นทางการ กฎเหล่านี้เป็นความหมายของข้อมูลที่ผู้ใช้เข้าใจ เนื่องจากคอมพิวเตอร์เข้าใจเฉพาะการแสดงที่เป็นทางการกฎทางธุรกิจจึงไม่สามารถแสดงโดยตรงในฐานข้อมูลได้ ต้องแมปกับการแสดงที่เป็นทางการแบบจำลองเชิงตรรกะซึ่งประกอบด้วยชุดของข้อ จำกัด ด้านความสมบูรณ์ ข้อ จำกัด เหล่านี้ - สคีมาฐานข้อมูล - เป็นตัวแทนเชิงตรรกะในฐานข้อมูลของกฎทางธุรกิจดังนั้นจึงเป็นความหมายที่เข้าใจโดย DBMS ของข้อมูล ตามมาว่าหาก DBMS ไม่ทราบและ / หรือไม่บังคับใช้ข้อ จำกัด ทั้งหมดที่แสดงถึงกฎเกณฑ์ทางธุรกิจก็จะมีความเข้าใจที่ไม่สมบูรณ์ว่าข้อมูลหมายถึงอะไร

หมายเหตุ: ความหมาย DBMS - "เข้าใจ" - ข้อ จำกัด ด้านความสมบูรณ์ - ไม่เหมือนกับความหมายที่ผู้ใช้เข้าใจ - กฎทางธุรกิจ - แต่การสูญเสียความหมายบางอย่างไปอย่างไรก็ตามเราได้รับความสามารถในการใช้การอนุมานเชิงตรรกะจากข้อมูล

"An Old Class of Errors" โดย Fabian Pascal


2

โดยทั่วไปมีข้อ จำกัด หลัก 4 ประเภทใน SQL:

  • Domain Constraint:หากค่าแอ็ตทริบิวต์ที่ระบุสำหรับทูเพิลใหม่ไม่ใช่โดเมนแอ็ตทริบิวต์ที่ระบุ

  • ข้อ จำกัด ของคีย์:หากค่าของคีย์แอ็ตทริบิวต์ในทูเพิลใหม่มีอยู่แล้วในทูเพิลอื่นในความสัมพันธ์

  • Referential Integrity:ถ้าค่าคีย์ต่างประเทศในทูเพิลใหม่อ้างอิงค่าคีย์หลักที่ไม่มีอยู่ในรีเลชันที่อ้างอิง

  • ความสมบูรณ์ของเอนทิตี:หากค่าคีย์หลักเป็นค่าว่างในทูเพิลใหม่


-1

ข้อ จำกัด คือเงื่อนไขที่สามารถตรวจสอบเงื่อนไขเฉพาะได้ ข้อ จำกัด ที่เกี่ยวข้องกับฐานข้อมูล ได้แก่ ความสมบูรณ์ของโดเมนความสมบูรณ์ของเอนทิตีความสมบูรณ์ของการอ้างอิงข้อ จำกัด ความสมบูรณ์ที่ผู้ใช้กำหนดเป็นต้น

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