Chúng ta nên làm mô hình mối quan hệ thực thể hoặc mô hình hướng đối tượng trước?


9

Khi xây dựng một ứng dụng từ đầu, tôi nên bắt đầu với mô hình hướng đối tượng (OO) hay mô hình mối quan hệ thực thể (ER)?

Câu trả lời:


13

Bạn có thể muốn cố gắng tuân thủ nguyên tắc trì hoãn các quyết định kiến ​​trúc càng lâu càng tốt. Ý nghĩ là, bạn sẽ biết nhiều hơn trong tương lai về miền vấn đề của bạn hơn là bạn làm ngay bây giờ - vì vậy, bất kỳ quyết định nào bạn đưa ra hôm nay đều bị nghi ngờ.

Một nguyên tắc tốt khác để kết hợp điều này có thể là cố gắng thử các phần rủi ro nhất trong các yêu cầu của bạn trước tiên - ý nghĩ là nếu bạn thực hiện các phần dễ dàng, sau đó thấy rằng các phần rủi ro sẽ chuyển bạn sang một hướng khác, bạn không có để làm lại các phần dễ dàng. Rủi ro ở đây có nghĩa là những điều bạn không chắc chắn về cách bạn nên làm chúng.

Với hai điều này và được cho là tôi thường cố gắng tiếp cận mọi thứ từ góc độ OO, trước tiên bạn có thể thử bắt đầu với mô hình OO của các phần rủi ro nhất trong ứng dụng của bạn và triển khai số lượng mã ít nhất có thể hoạt động thỏa mãn yêu cầu rủi ro. Sau đó, bắt đầu mở rộng mô hình OO của bạn khi cần để thêm chức năng bạn sẽ cần. Trong mọi lúc, bạn hoàn toàn có thể trì hoãn quyết định của mình về việc có nên sử dụng SQL hoặc NoQuery hay tệp phẳng hoặc lưu trữ đám mây hay bất cứ điều gì ... và cuối cùng bạn có thể thấy bạn không muốn quan hệ gì cả (không cần mô hình ER).


7

Mô hình ER chỉ ra cách duy trì dữ liệu của ứng dụng và mô hình OO quyết định cách thức dữ liệu đó sẽ được lưu trữ trong bộ nhớ hoặc trong khi ứng dụng đang chạy. Vì vậy, thiết kế lược đồ cơ sở dữ liệu (mô hình ER) và thiết kế cấu trúc lớp (mô hình OO) là những cân nhắc thiết kế liên quan và thường có thể được nghĩ đến đồng thời. Trong thực tế, nếu bạn đang sử dụng công cụ ánh xạ quan hệ đối tượng (ORM) , mô hình ER và mô hình OO của bạn có thể là một và giống nhau. Nói cách khác, các lớp của bạn (mô hình OO) có thể được chú thích theo cách mà chính chúng, chỉ định mô hình ER.

Tuy nhiên, trước khi thiết kế, hãy chắc chắn rằng bạn có một ý tưởng rất tốt về các yêu cầu thực tế của phần mềm, nó sẽ được sử dụng cho mục đích gì, nó sẽ được sử dụng như thế nào và ai sẽ sử dụng nó. Nhiều nhà phát triển bắt đầu suy nghĩ về các quyết định thiết kế trước khi họ hiểu đầy đủ các nhu cầu cần giải quyết của sản phẩm và kết thúc với một thiết kế không phù hợp với mục đích thực sự của ứng dụng.


+1 để xác định sự khác biệt giữa 2 loại mô hình. Tôi không hoàn toàn đồng ý rằng bạn có thể nghĩ về 2 mô hình đồng thời. Ngoài ra, một số người hâm mộ OO cho rằng Mô hình OO và ER của bạn không phải lúc nào cũng giống nhau. Tuy nhiên, một mô hình OO có thể được sử dụng làm cơ sở của thiết kế cơ sở dữ liệu nhưng việc chuyển đổi này hơi khó khăn.
NoChance

@EmmadKareem Bạn nói đúng, không phải lúc nào cũng thích hợp để nghĩ về hai mô hình đồng thời. Tôi đã nói về ý tưởng sử dụng ORM và chú thích các lớp để thiết kế mô hình ER được tích hợp vào mô hình OO, có thể nói là như vậy. Một số người chọn phát triển các ứng dụng theo cách này, về cơ bản là triển khai đồng thời cả OO và ER.
CFL_Jeff

Đừng nhầm mô hình miền của bạn với mô hình dữ liệu - Đừng nhầm lẫn một đối tượng (đại diện cho một thể hiện) với bảng cơ sở dữ liệu (chứa một bộ sưu tập các thứ)
Narender Parmar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.