@ Matt Sheppard:
สมมติว่าคุณมีโต๊ะลูกค้า แน่นอนว่าคุณไม่ต้องการให้ลูกค้าอยู่ในตารางมากกว่าหนึ่งครั้งมิฉะนั้นความสับสนจะเกิดขึ้นตลอดแผนกขายและโลจิสติกส์ของคุณ (โดยเฉพาะอย่างยิ่งถ้าหลายแถวเกี่ยวกับลูกค้ามีข้อมูลแตกต่างกัน)
ดังนั้นคุณมีตัวระบุลูกค้าที่ระบุลูกค้าโดยไม่ซ้ำกันและคุณต้องแน่ใจว่าลูกค้านั้นเป็นที่รู้จักตัวระบุ (ในใบแจ้งหนี้) เพื่อให้ลูกค้าและพนักงานบริการลูกค้ามีการอ้างอิงทั่วไปในกรณีที่พวกเขาต้องการสื่อสาร ในการรับประกันว่าไม่มีระเบียนลูกค้าที่ซ้ำซ้อนคุณเพิ่มข้อ จำกัด ที่ไม่ซ้ำกันลงในตารางโดยใช้คีย์หลักบนตัวระบุลูกค้าหรือผ่านข้อ จำกัด NOT NULL + UNIQUE ในคอลัมน์ตัวระบุลูกค้า
ถัดไปด้วยเหตุผลบางอย่าง (ซึ่งฉันนึกไม่ออก) คุณจะถูกขอให้เพิ่มคอลัมน์ GUID ลงในตารางลูกค้าและทำให้เป็นคีย์หลัก หากคอลัมน์ตัวระบุลูกค้าถูกทิ้งไว้โดยไม่มีการรับประกันความเป็นเอกลักษณ์คุณกำลังถามถึงปัญหาในอนาคตทั่วทั้งองค์กรเนื่องจาก GUID นั้นจะไม่ซ้ำกัน
"สถาปนิก" บางคนอาจบอกคุณว่า "โอ้ แต่เราจัดการกับข้อ จำกัด ของลูกค้าจริงในระดับแอปของเรา!" ขวา. แฟชั่นเกี่ยวกับภาษาการเขียนโปรแกรมสำหรับวัตถุประสงค์ทั่วไปและ (โดยเฉพาะ) กรอบชั้นกลางเปลี่ยนแปลงตลอดเวลาและโดยทั่วไปจะไม่มีวันหมดอายุฐานข้อมูลของคุณ และมีโอกาสดีมากที่คุณจะต้องเข้าถึงฐานข้อมูลโดยไม่ต้องผ่านแอปพลิเคชันปัจจุบัน == ปัญหา (แต่โชคดีที่คุณและ "สถาปนิก" หายไปนานดังนั้นคุณจะไม่ต้องไปทำความสะอาดให้วุ่นวาย) กล่าวอีกนัยหนึ่ง: รักษาข้อ จำกัด ที่ชัดเจนในฐานข้อมูล (และในระดับอื่น ๆ เช่นกันถ้าคุณมี เวลา).
กล่าวอีกนัยหนึ่ง: อาจมีเหตุผลที่ดีในการเพิ่มคอลัมน์ GUID ลงในตาราง แต่โปรดอย่าหลงลืมสิ่งนี้เพื่อลดความทะเยอทะยานของคุณลงเพื่อความสอดคล้องภายในข้อมูลจริง (== ที่ไม่ใช่ GUID)