เราควรสร้างแบบจำลองความสัมพันธ์เอนทิตีหรือการสร้างแบบจำลองเชิงวัตถุก่อนหรือไม่


9

เมื่อสร้างแอปพลิเคชันจากศูนย์ฉันควรเริ่มต้นด้วยโมเดลเชิงวัตถุ (OO) หรือโมเดลเอนทิตีสัมพันธ์ (ER) หรือไม่

คำตอบ:


13

คุณอาจต้องการลองสังเกตหลักการของการชะลอการตัดสินใจทางสถาปัตยกรรมให้นานที่สุด ความคิดนี้เกิดขึ้นเพื่อที่คุณจะได้รู้ในอนาคตเกี่ยวกับโดเมนปัญหาของคุณมากกว่าที่คุณทำในตอนนี้ดังนั้นการตัดสินใจใด ๆ ที่คุณทำในวันนี้เป็นที่น่าสงสัย

หลักการที่ดีอีกข้อหนึ่งในการจับคู่กับสิ่งนี้คือพยายามที่จะพยายามเสี่ยงส่วนที่คุณต้องการก่อน - ความคิดที่ว่าถ้าคุณทำส่วนที่ง่ายแล้วพบว่าส่วนที่เสี่ยงย้ายคุณไปในทิศทางที่แตกต่างกันคุณไม่มี เพื่อทำชิ้นส่วนที่ง่ายได้อีกครั้ง ความเสี่ยงที่นี่หมายถึงสิ่งที่คุณไม่แน่ใจว่าคุณควรทำอย่างไร

เมื่อพิจารณาจากทั้งสองนี้และเมื่อฉันพยายามเข้าใกล้สิ่งต่าง ๆ จากมุมมองของ OO คุณอาจลองเริ่มต้นด้วยโมเดล OO ของส่วนที่เสี่ยงที่สุดในการสมัครของคุณก่อนและใช้โค้ดที่มีความเป็นไปได้น้อยที่สุด ข้อกำหนดที่มีความเสี่ยง จากนั้นเริ่มขยายโมเดล OO ของคุณตามต้องการเพื่อเพิ่มฟังก์ชันการทำงานที่คุณต้องการ ในขณะที่คุณสามารถชะลอการตัดสินใจว่าจะใช้ SQL หรือ NoSQL หรือ flatfiles หรือที่เก็บข้อมูลบนคลาวด์หรืออะไรก็ตาม ... และในที่สุดคุณอาจพบว่าคุณไม่ต้องการความสัมพันธ์เลย (ยกเลิกความต้องการรุ่น ER)


7

โมเดล ER กำหนดวิธีเก็บรักษาข้อมูลของแอปพลิเคชันและรุ่น OO จะตัดสินว่าข้อมูลเดียวกันนั้นจะถูกเก็บไว้ในหน่วยความจำหรือขณะที่แอปพลิเคชันทำงาน ดังนั้นการออกแบบคีมาฐานข้อมูล (โมเดล ER) และการออกแบบโครงสร้างคลาส (โมเดล OO) เป็นข้อควรพิจารณาในการออกแบบที่เกี่ยวข้องและมักจะคิดเกี่ยวกับการพร้อมกัน อันที่จริงถ้าคุณใช้เครื่องมือการทำแผนที่วัตถุเชิงสัมพันธ์ (ORM)โมเดล ER ของคุณและโมเดล OO ของคุณอาจเป็นหนึ่งเดียวกัน กล่าวอีกนัยหนึ่งคลาสของคุณ (โมเดล OO) อาจมีคำอธิบายประกอบในลักษณะที่พวกเขาเองระบุรุ่น ER

ก่อนที่จะออกแบบให้แน่ใจว่าคุณมีความคิดที่ดีมากเกี่ยวกับข้อกำหนดที่แท้จริงของซอฟต์แวร์สิ่งที่จะใช้สำหรับวิธีการใช้งานและผู้ที่จะใช้ นักพัฒนาหลายคนเริ่มคิดเกี่ยวกับการตัดสินใจออกแบบก่อนที่พวกเขาจะเข้าใจความต้องการที่จะได้รับจากผลิตภัณฑ์และจบลงด้วยการออกแบบที่ไม่เหมาะสมสำหรับวัตถุประสงค์ที่แท้จริงของแอปพลิเคชัน


+1 สำหรับการระบุความแตกต่างระหว่างการสร้างแบบจำลองทั้งสองประเภท ฉันไม่เห็นด้วยอย่างเต็มที่ว่าคุณสามารถคิดเกี่ยวกับ 2 รุ่นพร้อมกันได้ นอกจากนี้แฟน ๆ OO บางคนพิจารณาว่าโมเดล OO และ ER ของคุณไม่ควรเหมือนกันเสมอไป อย่างไรก็ตามรูปแบบ OO อาจถูกใช้เป็นพื้นฐานของการออกแบบฐานข้อมูล แต่การเปลี่ยนแปลงนี้ค่อนข้างยุ่งยาก
NoChance

@EmmadKareem คุณพูดถูกมันไม่เหมาะสมที่จะนึกถึงทั้งสองรุ่นพร้อมกัน ฉันกำลังพูดถึงความคิดในการใช้ ORM และคำอธิบายประกอบในชั้นเรียนเพื่อให้การออกแบบแบบจำลอง ER ถูกรวมเข้ากับแบบจำลอง OO เพื่อที่จะพูด บางคนเลือกที่จะพัฒนาแอพพลิเคชั่นด้วยวิธีนี้
CFL_Jeff

อย่าเข้าใจผิดรูปแบบโดเมนของคุณสำหรับโมเดลข้อมูล - อย่าสับสนวัตถุ (ซึ่งหมายถึงอินสแตนซ์เดียว) ด้วยตารางฐานข้อมูล (ซึ่งมีชุดของสิ่งต่าง ๆ )
Narender Parmar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.