ฉันเพิ่งเริ่มงานใหม่ในฐานะผู้พัฒนาฐานข้อมูลสำหรับ บริษัท ขนาดกลาง - เล็กที่ใช้เทคโนโลยีของ Microsoft ฉันสังเกตเห็นตั้งแต่เนิ่นๆว่าการปฏิบัติที่เบี่ยงเบนไปจากสิ่งที่ฉันได้รับการสอนที่โรงเรียนเกี่ยวกับวิธีปฏิบัติที่ดีที่สุดรูปแบบการออกแบบการทดสอบและการจัดการโครงการ
สิ่งที่ดักฟังฉันมากที่สุดคือวิธีที่ผู้พัฒนาฐานข้อมูลหลักของเรา (ต่อจากนี้เรียกว่า "จอห์น") จะเก็บแบบแผนโมเดลในฐานข้อมูล! เราทำสิ่งนี้โดยมีตาราง 3 "เวทมนตร์"; หนึ่งสำหรับฐานข้อมูลสกีมาสำหรับหนึ่งตารางและอีกหนึ่งสำหรับคอลัมน์
การแทรกเร็กคอร์ดลงใน " Tables " -table สร้าง (ผ่านทริกเกอร์ฐานข้อมูล), ตารางจริง, ที่สอดคล้องกัน การแทรกแถวในตาราง " แถว " จะเป็นการอัพเดตตารางที่อ้างอิงด้วยแถวนั้น สิ่งเหล่านี้กลับถูกอ่านโดย C # -program แบบโฮมเมดของเขาเพื่อสร้างแบบจำลอง C # ซึ่งถูกใช้โดย frontend-Developers สำหรับตัวควบคุมและด้านนอก
นอกเหนือจากนี้การพัฒนาส่วนใหญ่จะทำตามกรอบASP.NET MVC
ฉันเห็นข้อบกพร่องสองสามข้อด้วยวิธีนี้:
- เราต้องการให้เขารักษา ORM และเขาไม่ค่อยมีเวลาทำ (ความมั่นคงในการทำงานดีมาก!
- ทริกเกอร์สำหรับตาราง "ตาราง" และ "แถว" มีข้อบกพร่อง พวกเขาไม่สนับสนุนการปรับปรุงตารางหรือตรวจสอบข้อ จำกัด หรือคุณสมบัติ "ขั้นสูง" เพิ่มเติม ในขณะที่เราสามารถปรับปรุงพวกเขาอย่างแน่นอนฉันยังไม่แน่ใจว่านี่เป็นวิธีที่จะไปไหม
- การรักษาตรรกะการเขียนโปรแกรมไว้ในฐานข้อมูลทำให้รู้สึกแปลกและ จำกัด (แม้ว่าจะเป็นไปได้ที่จะขยายโมเดลของเขาผ่าน C #)
- เครื่องกำเนิดรุ่น C # ของเขาจะต้องทำงานด้วยตนเองโดยหนึ่งใน 3 คน (ซึ่งฉันเป็นหนึ่ง) และยังไม่เป็นผู้ใหญ่พอที่จะรวมไว้ในกระบวนการสร้างอัตโนมัติ
หลายคนแนะนำการวางขั้นตอนในผลิตภัณฑ์จริงและผ่านการทดสอบเช่นEntity Frameworkแต่เขาปฏิเสธว่าการรักษาตรรกะทางธุรกิจในเลเยอร์โค้ดนั้นเหมาะสำหรับแอปพลิเคชันขนาดเล็กและโครงการบูตสแตรปสำหรับผู้เริ่มต้น
โพสต์นี้นำไปสู่บางสิ่งที่อาจดูเหมือนการอภิปรายที่มีความคิดเห็น แต่นั่นไม่ใช่ความตั้งใจของฉัน ฉันแค่ต้องการความกระจ่างเกี่ยวกับแนวทางสถาปัตยกรรมของเรา
การรักษาแบบจำลองโดเมนในฐานข้อมูลเป็นโซลูชั่นที่ยั่งยืนสำหรับ บริษัท ที่กำลังเติบโตหรือไม่?