ฉันรู้ว่าเกมนี้มาช้าและคำถามได้รับการตอบรับเป็นอย่างดี แต่ฉันต้องการเสนอความคิดเห็นของฉันใน # 3 เกี่ยวกับคำนำหน้าชื่อคอลัมน์
คอลัมน์ทั้งหมดควรตั้งชื่อด้วยคำนำหน้าที่ไม่ซ้ำกับตารางที่กำหนดไว้
เช่นตารางที่ได้รับ "ลูกค้า" และ "ที่อยู่" มาด้วยคำนำหน้า "cust" และ "addr" ตามลำดับ "ลูกค้า" จะมี "cust_id", "cust_name" ฯลฯ ในนั้น "ที่อยู่" จะมี "addr_id", "addr_cust_id" (FK กลับสู่ลูกค้า), "addr_street" ฯลฯ ในนั้น
เมื่อฉันถูกนำเสนอครั้งแรกกับมาตรฐานนี้ฉันถูกกำหนดตายต่อมัน ฉันเกลียดความคิด ฉันทนไม่ได้กับความคิดของการพิมพ์และความซ้ำซ้อนที่เพิ่มขึ้นทั้งหมด ตอนนี้ฉันมีประสบการณ์เพียงพอที่จะไม่กลับไป
ผลลัพธ์ของการทำเช่นนี้คือคอลัมน์ทั้งหมดในสคีมาฐานข้อมูลของคุณไม่ซ้ำกัน มีประโยชน์สำคัญอย่างหนึ่งต่อสิ่งนี้ซึ่งสำคัญกว่าการโต้แย้งทั้งหมด (ในความคิดของฉัน):
คุณสามารถค้นหาฐานรหัสทั้งหมดของคุณและค้นหารหัสบรรทัดทุกบรรทัดที่สัมผัสคอลัมน์ใด ๆ ได้อย่างน่าเชื่อถือ
ประโยชน์ที่ได้จาก # 1 นั้นใหญ่มากอย่างไม่น่าเชื่อ ฉันสามารถคัดค้านคอลัมน์และรู้ว่าต้องอัปเดตไฟล์ใดก่อนที่คอลัมน์จะสามารถลบออกอย่างปลอดภัยจากสคีมา ฉันสามารถเปลี่ยนความหมายของคอลัมน์และรู้ได้อย่างชัดเจนว่าโค้ดใดที่จำเป็นต้องได้รับการปรับโครงสร้างใหม่ หรือฉันสามารถบอกได้ว่าข้อมูลจากคอลัมน์นั้นแม้ถูกใช้ในส่วนใดส่วนหนึ่งของระบบ ฉันไม่สามารถนับจำนวนครั้งที่สิ่งนี้ทำให้โครงการขนาดใหญ่ที่อาจกลายเป็นโครงการที่เรียบง่ายหรือจำนวนชั่วโมงที่เราบันทึกไว้ในงานพัฒนา
อีกประโยชน์ที่ค่อนข้างน้อยคือคุณต้องใช้ชื่อแทนตารางเมื่อคุณเข้าร่วมด้วยตนเองเท่านั้น:
SELECT cust_id, cust_name, addr_street, addr_city, addr_state
FROM customer
INNER JOIN address ON addr_cust_id = cust_id
WHERE cust_name LIKE 'J%';