Tôi có một số đối tượng khác nhau với số thuộc tính khác nhau. Cho đến bây giờ, tôi đã lưu dữ liệu trong các tệp XML dễ dàng cho phép thay đổi số lượng thuộc tính. Nhưng tôi đang cố gắng chuyển nó vào cơ sở dữ liệu.Cách lưu trữ dữ liệu với số lượng thuộc tính động trong cơ sở dữ liệu
Cách ưa thích của bạn để lưu trữ dữ liệu này là gì?
Một vài chiến lược tôi đã xác định được cho đến nay:
- Có một trường duy nhất có tên là "thuộc tính" trong bảng của đối tượng và lưu trữ dữ liệu tuần tự hoặc json'ed trong đó.
- Lưu trữ dữ liệu trong hai bảng (đối tượng, thuộc tính) và sử dụng một phần ba để lưu các mối quan hệ, làm cho nó thành một mối quan hệ n: m thực. Giải pháp rất sạch sẽ, nhưng có thể rất tốn kém để lấy toàn bộ đối tượng và tất cả các thuộc tính của nó
- Xác định các thuộc tính mà tất cả các đối tượng có điểm chung và tạo trường cho các đối tượng này vào bảng của đối tượng. Lưu trữ các thuộc tính còn lại dưới dạng dữ liệu tuần tự trong một trường khác. Điều này có lợi thế so với chiến lược đầu tiên, giúp việc tìm kiếm dễ dàng hơn.
Bất kỳ ý tưởng nào?
Động lực để chuyển sang giải pháp db là gì? Bạn nói dưới đây, tốc độ đó là mối quan tâm chính của bạn. Bạn có nghĩ rằng giải pháp db sẽ nhanh hơn phương pháp XML hiện tại của bạn không? –
Một chiến lược thứ tư đến với tâm trí với DVK đề xuất như nhau: Lưu trữ các thuộc tính phổ biến trong bảng đối tượng và lưu trữ tất cả các khác bằng cách sử dụng một mối quan hệ 1: n một bảng thứ hai. Có vẻ như thỏa hiệp tốt nhất cho tốc độ, tính linh hoạt và giải pháp sạch (@Tobiask) –
@Corey, không, tôi không biết. Các giải pháp XML là đáng kinh ngạc nhanh vào lúc này và tôi không nghĩ rằng một DB có thể theo kịp với điều đó. Nó là một tập thể dục của tôi, cố gắng làm cho hệ thống linh hoạt hơn liên quan đến các tùy chọn lưu trữ và đồng thời cải thiện các kỹ năng MySQL của tôi. –