ในหลาย ๆ แนวทางในการพัฒนาซอฟต์แวร์เช่นวิธีการที่คล่องตัวการออกแบบที่ขับเคลื่อนด้วยโดเมนและการวิเคราะห์และออกแบบเชิงวัตถุเราได้รับการสนับสนุนให้ใช้วิธีการหนึ่งซ้ำเพื่อการพัฒนา
ดังนั้นเราไม่ควรที่จะทำให้โมเดลโดเมนของเราถูกต้องในครั้งแรกที่เราเริ่มทำงานในโครงการ แต่เมื่อเวลาผ่านไปเราจะปรับโครงสร้างโมเดลใหม่เนื่องจากเราได้รับความเข้าใจที่ลึกซึ้งยิ่งขึ้นเกี่ยวกับโดเมนปัญหาด้วยเวลา
นอกเหนือจากนั้นแม้ว่าเราจะพยายามทำให้ได้แบบอย่างที่สมบูรณ์แบบซึ่งฉันเชื่อแล้วว่ามันยากมากความต้องการอาจเปลี่ยนแปลงได้ ดังนั้นหลังจากที่ซอฟแวร์ได้ถูกนำไปใช้เพื่อการผลิต, ผู้ใช้อาจสังเกตเห็นว่าเป็นความต้องการบางอย่างก็ไม่ได้เข้าใจอย่างสมบูรณ์หรือเลว, ความต้องการบางอย่างที่ขาดหายไป
ประเด็นตรงนี้คือเราอาจจำเป็นต้องเปลี่ยนรุ่นหลังจากที่ซอฟต์แวร์ได้รับการปรับใช้ หากสิ่งนี้เกิดขึ้นเรามีปัญหา: ฐานข้อมูลการผลิตมีข้อมูลของผู้ใช้ซึ่งมีความสำคัญและติดตั้งในรูปแบบสำหรับรุ่นเก่าแล้ว
การอัปเดตรหัสอาจเป็นเรื่องยากหากรหัสไม่ได้รับการออกแบบมาอย่างดีและหากระบบมีขนาดใหญ่ แต่มันสามารถทำได้เมื่อเวลาผ่านไปเรามีเครื่องมือเช่น Git ซึ่งช่วยให้เราทำเช่นนั้นได้โดยไม่สร้างความเสียหายกับเวอร์ชันที่พร้อมใช้งานจริง
ในทางกลับกันถ้าโมเดลเปลี่ยนแปลงหากคุณสมบัติของคลาสหายไปหรืออะไรก็ตามฐานข้อมูลก็ควรเปลี่ยนเช่นกัน แต่เรามีปัญหา: มีข้อมูลอยู่ที่นั่นซึ่งไม่สามารถสูญหายได้ซึ่งได้รับการจัดรูปแบบสำหรับรุ่นเก่าแล้ว
ดูเหมือนว่าฐานข้อมูลเชิงสัมพันธ์ที่นี่เป็นอุปสรรคที่ขัดขวางเราจากการพัฒนาซ้ำ ๆ และแม้แต่การอัพเดตซอฟต์แวร์เมื่อผู้ใช้ปลายทางต้องการ
วิธีหนึ่งที่ฉันเคยใช้คือการเขียนรหัสคลาสพิเศษที่แมปตารางฐานข้อมูลเก่ากับรายการใหม่ ดังนั้นคลาสเหล่านี้จึงเลือกข้อมูลในรูปแบบเก่าแปลงเป็นรูปแบบที่ใช้โดยโมเดลใหม่และบันทึกลงในตารางใหม่
วิธีการนี้ดูเหมือนจะไม่เป็นวิธีที่ดีที่สุด คำถามของฉันที่นี่คือ: มีวิธีใดที่รู้จักกันดีและแนะนำในการกระทบยอดการพัฒนาซ้ำกับฐานข้อมูลเชิงสัมพันธ์?