Tôi có câu hỏi kiến trúc liên quan đến trường tùy chỉnh trong chế độ xem cho một đối tượng. Giả sử bạn có một đối tượng người dùng với một số thông tin cơ bản như firstname, lastname, ... có thể được tất cả các khách hàng sử dụng.Trường tùy chỉnh cho Biểu mẫu đại diện cho một đối tượng
Hiện tại, chúng tôi thường nhận được câu hỏi từ khách hàng để thêm một vài trường tùy chỉnh điển hình cho miền của họ. Giải pháp của chúng tôi bây giờ là cột dữ liệu xml, nơi các cặp giá trị khóa được lưu trữ. Điều này đã được ok cho đến nay, nhưng bây giờ chúng ta sẽ phải tìm một giải pháp kiến trúc hơn.
Ví dụ: hiện tại, khách hàng muốn có danh sách thả xuống nơi khách hàng có thể chọn giá trị cho trường tùy chỉnh của mình. Chúng tôi vẫn có thể lưu trữ giá trị đã chọn trong cột dữ liệu xml, nhưng chúng tôi lưu trữ tất cả các giá trị thả xuống đó ở đâu ...
Tôi biết rằng bạn càng có thể thêm các trường tùy chỉnh như trình đơn thả xuống và tôi đã tự hỏi cách xử lý điều này tốt nhất. Tôi muốn tránh tạo bảng tùy chỉnh cho khách hàng hoặc có một bảng với 90 cột (10 cơ bản và sau đó là 10 cho mỗi khách hàng), ...
Bạn nên có khái niệm chung và có thể giải quyết tất cả các loại vấn đề trong tương lai.
Điều tôi đang nghĩ đến là Bảng cấu hình người dùng trong đó mỗi bản ghi có khóa ngoại cho khách hàng (kênh trong cơ sở dữ liệu của chúng tôi), sau đó là một trường FieldName, cột FieldType và giá trị cột. Giá trị cột phải là cột loại xml, vì đối với một menu thả xuống, chúng tôi sẽ cần phải thêm nhiều giá trị. Ngoài ra, mỗi giá trị có thể có thêm dữ liệu gắn liền với nó (không chỉ là một tên). Vấn đề khác sau đó là làm thế nào để lưu trữ giá trị đã chọn. Tôi không thích ý tưởng có chìa khóa nước ngoài để xml trong cơ sở dữ liệu của tôi (đọc một nơi nào đó mà Azure không thể xử lý tất cả điều này là tốt). Bạn chỉ cần lưu trữ tên của giá trị (nếu giá trị đã biến mất khỏi xml?)?
Mọi tài liệu, liên kết về loại vấn đề này cũng sẽ tuyệt vời. Tôi đang cố gắng để tìm một mẫu thiết kế mà đề với loại vấn đề trong cơ sở dữ liệu.
Nếu đây là chủ đề, thì bạn không phải là lập trình viên thực tế. –
Bạn đã thấy điều này trên SO: http://stackoverflow.com/questions/1126783/what-are-design-patterns-to-support-custom-fields-in-an-application? Nó có vẻ khá toàn diện đối tượng. –
@Simon Thx, chưa tìm thấy cái đó. –