สรุปและแบบฝึกหัด
ประเด็นสำคัญที่ควรจำ
- แอปส่วนใหญ่ต้องการเพียงหนึ่งในสามรูปแบบการจัดเก็บข้อมูล — เชิงสัมพันธ์ เอกสาร หรือคีย์-แวลู — และเชิงสัมพันธ์คือค่าเริ่มต้นที่ปลอดภัย
- เริ่มด้วยฐานข้อมูลที่มีคนดูแลให้ คุณยังคงเป็นเจ้าของข้อมูลและตัดสินใจเรื่องสคีมา ส่วนแพลตฟอร์มดูแลเรื่องเซิร์ฟเวอร์ให้
- การออกแบบสคีมาที่ดีหมายถึงชนิดข้อมูลที่ตรงกับความเป็นจริง มี foreign key และเงื่อนไขครบถ้วน มี index ที่สมเหตุสมผล และไม่มีข้อมูลซ้ำซ้อน
- ปฏิบัติกับทุก migration ว่าเป็นประตูทางเดียว แบ็กอัพก่อนทำสิ่งใดที่ลบหรือเปลี่ยนชื่อ และตรวจสอบ migration ที่ AI เขียนอย่างละเอียด
- เรียกร้องให้ใช้ parameterized queries เสมอ เพื่อไม่ให้ข้อมูลจากผู้ใช้ถูกต่อรวมเข้ากับ โดยตรง
ลองทำดู
เลือกไอเดียแอปเล็ก ๆ สักตัว แล้วเขียนเอนทิตี (entities) และความสัมพันธ์ของมันเป็นภาษาธรรมดาก่อน จากนั้นส่งคำอธิบายนั้นให้ AI แล้วขอสคีมาพร้อมไฟล์ migration แบบเดินหน้า — และตรวจสอบผลลัพธ์เทียบกับเช็คลิสต์ของบทนี้ก่อนที่จะรันอะไรทั้งสิ้น
Design a relational schema for a personal bookmarks app.
Entities and relationships:
- A user has many bookmarks.
- A bookmark belongs to one user, has a URL, a title, and many tags.
- A tag can apply to many bookmarks.
Requirements:
- Use UUID primary keys and created_at timestamps.
- Enforce relationships with foreign keys.
- Add indexes for the columns we'll filter on.
- Give me the schema as SQL plus a forward migration file.
- Flag any migration step that drops or renames so I can back up first.