Чи варто спочатку робити моделювання відносин з сутністю або об'єктно-орієнтоване моделювання?


9

Створюючи додаток з нуля, я повинен починати з об'єктно-орієнтованої (OO) моделі чи моделі відносин між сутністю (ER)?

Відповіді:


13

Ви можете спробувати дотримуватись принципу затримки архітектурних рішень якомога довше. Думається, що ви в майбутньому дізнаєтесь більше про свою проблемну область, ніж зараз, - тому будь-які рішення, які ви приймаєте сьогодні, підозрілі.

Ще одним хорошим принципом, щоб поєднати це, може бути спершу спробувати спробувати найризичніші частини своїх вимог - думка полягає в тому, що якщо ти будеш робити легкі частини, то виявиш, що ризиковані частини рухають тебе в іншому напрямку, у тебе немає повторно робити легкі деталі. Тут ризиковано означає речі, які ви не впевнені, як слід їх робити.

З огляду на ці два, і зважаючи на те, що я часто намагаюся наблизитись до речей з точки зору ООС, ви можете спершу спробувати почати з моделі ОО найризикованіших частин вашої програми та застосувати як мінімум можливий обсяг коду, який може задовольнити ризиковані вимоги. Потім почніть розширювати модель OO за необхідності, щоб додати необхідну функціональність. Весь цей час ви можете повністю затримати рішення щодо того, використовувати SQL чи NoSQL, плоскі файли чи хмарне сховище чи будь-що інше ... і, врешті, ви можете виявити, що взагалі не хочете реляційних (ухиляючи від необхідності модель ER).


7

Модель ER диктує, як зберігатимуться дані програми, а модель OO вирішує, як ці самі дані будуть зберігатися в пам'яті або під час роботи програми. Отже, схема схеми баз даних (модель ER) та конструкція структури класів (модель OO) пов'язані між собою дизайнерськими міркуваннями, і зазвичай їх можна думати одночасно. Насправді, якщо ви використовуєте інструмент об'єктно-реляційного відображення (ORM) , ваша модель ER та модель OO можуть бути одними і тими ж. Іншими словами, ваші класи (модель OO) можуть бути анотовані таким чином, що вони самі визначають модель ER.

Перш ніж проектувати, переконайтеся, що ви дуже добре уявляєте фактичні вимоги програмного забезпечення, для чого воно буде використовуватися, як воно буде використовуватися та хто ним буде користуватися. Багато розробників починають замислюватися над дизайнерськими рішеннями ще до того, як повністю зрозуміють потреби, які повинен вирішувати виріб, і закінчують дизайн, який не підходить для справжньої мети програми.


+1 для визначення різниці між двома типами моделювання. Я не повністю згоден, що ви можете думати про 2 моделі одночасно. Також деякі шанувальники OO вважають, що моделі OO та ER не завжди повинні бути однаковими. Однак модель ОО може бути використана як основа дизайну бази даних, але ця трансформація є дещо хитрою.
NoChance

@EmmadKareem Ви маєте рацію, не завжди доречно думати про дві моделі одночасно. Я говорив посилаючись на ідею використання ORM та анотації класів, тому дизайн моделі ER інтегрується в модель OO, так би мовити. Деякі люди вирішують розробляти додатки таким чином, який по суті реалізує як OO, так і ER одночасно.
CFL_Jeff

Не помиляйте свою модель домену за моделлю даних - не плутайте об’єкт (який представляє єдиний екземпляр) з таблицею баз даних (яка містить колекцію речей)
Narender Parmar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.