ในกลุ่มนักพัฒนาของเรามีการถกเถียงกันอย่างดุเดือดเกี่ยวกับหลักการตั้งชื่อสำหรับคีย์หลักและคีย์ต่างประเทศ โดยพื้นฐานแล้วมีโรงเรียนความคิดสองแห่งในกลุ่มของเรา:
1:
Primary Table (Employee)
Primary Key is called ID
Foreign table (Event)
Foreign key is called EmployeeID
หรือ
2:
Primary Table (Employee)
Primary Key is called EmployeeID
Foreign table (Event)
Foreign key is called EmployeeID
ฉันไม่ต้องการให้ชื่อของตารางซ้ำกันในคอลัมน์ใด ๆ (ดังนั้นฉันชอบตัวเลือกที่ 1 ด้านบน) ตามแนวคิดแล้วมันสอดคล้องกับแนวทางปฏิบัติที่แนะนำในภาษาอื่น ๆ โดยที่คุณไม่ได้ใช้ชื่อของวัตถุในชื่อคุณสมบัติ ฉันคิดว่าการตั้งชื่อ Foreign Key EmployeeID(หรือEmployee_IDอาจจะดีกว่า) เป็นการบอกผู้อ่านว่ามันคือIDคอลัมน์ของEmployeeTable
คนอื่น ๆ บางคนชอบตัวเลือก 2 ที่คุณตั้งชื่อคีย์หลักที่นำหน้าด้วยชื่อตารางเพื่อให้ชื่อคอลัมน์เหมือนกันทั่วทั้งฐานข้อมูล ฉันเห็นจุดนั้น แต่ตอนนี้คุณไม่สามารถแยกคีย์หลักออกจากคีย์ต่างประเทศได้ด้วยสายตา
นอกจากนี้ฉันคิดว่ามันซ้ำซ้อนที่จะมีชื่อตารางในชื่อคอลัมน์เพราะถ้าคุณคิดว่าตารางเป็นเอนทิตีและคอลัมน์เป็นคุณสมบัติหรือแอตทริบิวต์ของเอนทิตีนั้นคุณจะคิดว่ามันเป็นแอตทริบิวต์ ID ของEmployeeไม่ใช่EmployeeIDแอตทริบิวต์ของพนักงาน ผมไม่ได้ไปสอบถามเพื่อนร่วมงานของฉันสิ่งที่เขาPersonAgeหรือPersonGenderเป็น ฉันถามเขาว่าอายุเท่าไหร่
อย่างที่ฉันพูดมันเป็นการถกเถียงกันอย่างดุเดือดและเราจะดำเนินการต่อไปเรื่อย ๆ ฉันสนใจที่จะได้รับมุมมองใหม่ ๆ