Một cách là thiết kế mô hình của bạn trước khi bạn thiết kế cơ sở dữ liệu của bạn. Khi thiết kế mô hình của bạn, trọng tâm là nắm bắt logic kinh doanh và ý nghĩa trong miền vấn đề. Điều này cần được nắm bắt theo cách có ý nghĩa đối với doanh nghiệp, bao gồm không chỉ các thực thể và trường dữ liệu. Một số yếu tố dữ liệu được giải thích từ các yếu tố khác, một số yếu tố phụ thuộc vào các yếu tố khác, v.v. Ngoài ra, bạn thêm vào mô hình này bất kỳ logic cơ bản nào bạn cần, chẳng hạn như cách một đối tượng phản hồi bên trong khi một yếu tố nhất định được đặt thành một giá trị nhất định.
Hoàn toàn có khả năng bạn sẽ kết thúc với thứ gì đó giống hệt 90% so với cách bạn kết thúc dữ liệu. Tốt rồi. Nó có thể hoàn toàn giống hệt nhau mà không bị ghép nối.
Cũng lưu ý rằng mô hình hóa miền trong sương mù của sự thiếu hiểu biết thực sự bền bỉ là một chút chén thánh cho thiết kế phần mềm. Nếu bạn có thể làm điều đó, tuyệt vời. Nhưng nếu miền vấn đề hoàn toàn có ý nghĩa và có bất kỳ sự phức tạp nào với nó thì bạn vẫn nên rút lui khỏi mô hình miền theo thời gian để kiểm tra sự kiên trì của dữ liệu để đảm bảo rằng bạn đã vẽ cho mình vào một góc.
Chỉ cần nhớ vai trò thực tế của các thành phần khác nhau và giữ các vai trò đó tách biệt khi bạn thiết kế chúng. Đối với bất kỳ quyết định thiết kế nhất định, hãy tự hỏi nếu bất kỳ vai trò nào trong số đó bị vi phạm:
- Cơ sở dữ liệu - Lưu trữ dữ liệu, duy trì tính toàn vẹn của dữ liệu, duy trì dữ liệu ở trạng thái nghỉ.
- Mô hình - Chứa logic nghiệp vụ, mô hình hóa miền vấn đề, duy trì dữ liệu chuyển động, phản ứng với các sự kiện cấp doanh nghiệp, v.v.
- Lượt xem - Trình bày dữ liệu cho người dùng, thực hiện logic phía người dùng (xác thực cơ bản trước khi xác thực đúng được thực hiện trong các mô hình, v.v.).
- Bộ điều khiển - Phản hồi các sự kiện của người dùng, chuyển điều khiển cho các mô hình, yêu cầu định tuyến và phản hồi trả về.