Tôi đã thu thập một loạt các câu hỏi phỏng vấn như "Mô tả cách bạn sẽ thiết kế ứng dụng album ảnh", "Mô tả cách bạn sẽ thiết kế tính năng đặc biệt này của trang web cụ thể này" (ví dụ: thích trên Facebook, đề xuất trên Amazon, giỏ hàng, trò chơi của jack đen). Sau đó, nếu có hàng triệu thứ này thì sao? Bạn sẽ thay đổi điều gì?
Có vẻ như điều này hoặc là mong đợi một lược đồ cơ sở dữ liệu hoặc một loạt các định nghĩa lớp (hoặc cả hai?). Tôi đã học về cơ sở dữ liệu ở trường nhưng tôi chưa bao giờ thực sự kiến trúc một ứng dụng trước đây và gặp khó khăn khi biết bắt đầu từ đâu, liệu các thiết kế tôi đưa ra có "tốt" hay không và tôi có thể thay đổi gì để có thể mở rộng được.
Có một cách tiếp cận chung hoặc quá trình suy nghĩ khi thiết kế các hệ thống này? Và những vấn đề / vấn đề chung dường như xuất hiện rất nhiều trong thiết kế mà tôi nên cố gắng tránh? Ai đó có thể dẫn tôi đi qua một (hoặc tốt nhất là tất cả, trong khi so sánh nhu cầu của từng người) và giải thích:
1) Làm thế nào để bạn đưa ra những thực thể cần thiết? 2) Làm thế nào để bạn quyết định những mối quan hệ tất cả mọi thứ sẽ có? 3) Làm thế nào để bạn kết hợp tối ưu hóa hiệu suất vào thiết kế của bạn? 4) Tôi có làm điều này bằng cách sử dụng các lớp hoặc cơ sở dữ liệu không? Liệu nó có tạo ra sự khác biệt không (ví dụ tôi có một lớp không thể dịch sang bảng cơ sở dữ liệu không?)
Lý do chính tôi hỏi là vì tôi đã trải qua "Bẻ khóa phỏng vấn mã hóa" và câu trả lời của tôi hoàn toàn khác với tác giả - tôi có những ý tưởng rất khác nhau về những lớp học quan trọng.
ATTEMPT CỦA TÔI: Với ứng dụng chia sẻ ảnh, tôi chắc chắn sẽ có các lớp / bảng: Ảnh và Người dùng chắc chắn.
Sau đó, tôi nghĩ rằng nếu chúng ta đang cố gắng tạo một lược đồ, sẽ có một bảng liên kết ảnh và người dùng nếu chúng ta giả sử mỗi người trong ảnh được liên kết với ảnh (bảng này có cần thiết không? Nếu không, nó vẫn còn là thông lệ để có một bảng riêng cho các mối quan hệ nhiều-nhiều hay không?).
Nhưng nếu chúng ta đang cố gắng thực hiện một cách tiếp cận hướng đối tượng, có thể thay vào đó chúng ta sẽ có một lớp được gọi là album thực hiện tất cả công việc và có tất cả thông tin từ hai bảng / lớp khác. Đây là một điều tôi nhận thấy trong cuốn sách - có một nhóm các lớp và sau đó một lớp về cơ bản có tất cả thông tin và kết nối các lớp khác - điều này có phổ biến không? Ví dụ, trong các ví dụ của tôi ở trên, điều này có vẻ như nó sẽ được áp dụng?
Tôi chỉ hy vọng một số quy tắc / hướng dẫn chung để tuân theo bởi vì ngay bây giờ tôi không biết làm thế nào để biết một kiến trúc tốt cho một hệ thống lớn trông như thế nào.