ในกลุ่มนักพัฒนาของเรามีการถกเถียงกันอย่างดุเดือดเกี่ยวกับหลักการตั้งชื่อสำหรับคีย์หลักและคีย์ต่างประเทศ โดยพื้นฐานแล้วมีโรงเรียนความคิดสองแห่งในกลุ่มของเรา:
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
คอลัมน์ของEmployee
Table
คนอื่น ๆ บางคนชอบตัวเลือก 2 ที่คุณตั้งชื่อคีย์หลักที่นำหน้าด้วยชื่อตารางเพื่อให้ชื่อคอลัมน์เหมือนกันทั่วทั้งฐานข้อมูล ฉันเห็นจุดนั้น แต่ตอนนี้คุณไม่สามารถแยกคีย์หลักออกจากคีย์ต่างประเทศได้ด้วยสายตา
นอกจากนี้ฉันคิดว่ามันซ้ำซ้อนที่จะมีชื่อตารางในชื่อคอลัมน์เพราะถ้าคุณคิดว่าตารางเป็นเอนทิตีและคอลัมน์เป็นคุณสมบัติหรือแอตทริบิวต์ของเอนทิตีนั้นคุณจะคิดว่ามันเป็นแอตทริบิวต์ ID ของEmployee
ไม่ใช่EmployeeID
แอตทริบิวต์ของพนักงาน ผมไม่ได้ไปสอบถามเพื่อนร่วมงานของฉันสิ่งที่เขาPersonAge
หรือPersonGender
เป็น ฉันถามเขาว่าอายุเท่าไหร่
อย่างที่ฉันพูดมันเป็นการถกเถียงกันอย่างดุเดือดและเราจะดำเนินการต่อไปเรื่อย ๆ ฉันสนใจที่จะได้รับมุมมองใหม่ ๆ