ฉันทำงานกับฐานข้อมูลเชิงสัมพันธ์มาเป็นเวลานาน และตอนนี้ฉันกำลังจะทำงานกับ DynamoDB หลังจากที่ทำงานกับฐานข้อมูลเชิงสัมพันธ์ ฉันกำลังประสบปัญหาในการออกแบบตาราง SQL ปัจจุบันบางส่วนใน DynamoDB โดยเฉพาะอย่างยิ่งการตัดสินใจเกี่ยวกับพาร์ติชั่นและคีย์การเรียงลำดับ ฉันจะพยายามอธิบายด้วยตัวอย่าง:
ตารางปัจจุบัน:
Student: StudentId(PK), Email, First name, Last name, Password, SchoolId(FK)
School: SchoolId(PK), Name, Description
ฉันกำลังคิดที่จะรวมตารางเหล่านี้ใน DynamoDB และใช้ SchoolId เป็นคีย์พาร์ติชัน ส่วน StudentId เป็นคีย์การเรียงลำดับ อย่างไรก็ตาม ฉันเห็นตัวอย่างที่คล้ายกันบางตัวอย่างใช้ StudentId เป็นคีย์พาร์ติชัน
แล้วฉันก็รู้ว่าเราใช้ "ชื่อผู้ใช้" ในแต่ละฟังก์ชันการเข้าสู่ระบบ ดังนั้นแอปพลิเคชันจะสืบค้นด้วย "ชื่อผู้ใช้" (บางครั้งใช้รหัสผ่านหรือโทเค็นการรับรองความถูกต้อง) บ่อยครั้ง สถานการณ์นี้ทำให้ฉันคิดเกี่ยวกับ; SchoolId เป็นคีย์พาร์ติชัน และชื่อผู้ใช้เป็นคีย์การเรียงลำดับ
ฉันต้องการแนวคิดบางอย่างเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดในกรณีนั้น และคำแนะนำเพื่อให้ฉันเข้าใจแนวคิด NoSQL และ DynamoDb ได้ดียิ่งขึ้น