ฉันทำงานกับฐานข้อมูลเชิงสัมพันธ์และคิดว่าฉันเข้าใจแนวคิดพื้นฐานของการออกแบบสคีมาที่ดีพอสมควร ฉันเพิ่งได้รับมอบหมายให้ทำโครงการที่ DB ออกแบบโดยที่ปรึกษาที่ได้รับค่าตอบแทนสูง โปรดแจ้งให้เราทราบว่าลำไส้ของฉัน - "WTF ??!?" - ได้รับการรับประกันหรือเป็นชายผู้นี้ที่เป็นอัจฉริยะที่เขาใช้งานนอกโลกของฉันหรือไม่?
DB ในคำถามคือแอปที่ใช้ในการป้อนคำขอจากพนักงาน เพียงดูที่ส่วนเล็ก ๆ ของมันคุณมีข้อมูลเกี่ยวกับผู้ใช้และข้อมูลเกี่ยวกับการร้องขอ ฉันจะออกแบบเช่นนี้เพื่อ:
ตารางผู้ใช้:
UserID (primary Key, indexed, no dupes)
FirstName
LastName
Department
ขอโต๊ะ
RequestID (primary Key, indexed, no dupes)
<...> various data fields containing request details
UserID -- foreign key associated with User table
ง่ายใช่มั้ย
ที่ปรึกษาออกแบบแบบนี้ (พร้อมข้อมูลตัวอย่าง):
UsersTable
UserID FirstName LastName
234 John Doe
516 Jane Doe
123 Foo Bar
DepartmentsTable
DepartmentID Name
1 Sales
2 HR
3 IT
UserDepartmentTable
UserDepartmentID UserID Department
1 234 2
2 516 2
3 123 1
RequestTable
RequestID UserID <...>
1 516 blah
2 516 blah
3 234 blah
ฐานข้อมูลทั้งหมดถูกสร้างขึ้นเช่นนี้โดยทุกชิ้นส่วนของข้อมูลถูกห่อหุ้มในตารางของตัวเองโดยมี ID ตัวเลขที่เชื่อมโยงทุกอย่างเข้าด้วยกัน เห็นได้ชัดว่าที่ปรึกษาได้อ่านเกี่ยวกับ OLAP และต้องการ 'ความเร็วในการค้นหาจำนวนเต็ม'
นอกจากนี้เขายังมีกระบวนงานที่เก็บไว้จำนวนมากเพื่ออ้างอิงข้ามตารางทั้งหมดเหล่านี้
นี่เป็นการออกแบบที่ถูกต้องสำหรับ SQL DB ขนาดเล็กถึงขนาดกลางหรือไม่?
ขอบคุณสำหรับความคิดเห็น / คำตอบ ...