Tôi có một góc client JS JSON interfacing với JAVA/MySQL stack. Vì MySQL là một RDBMS, tất cả dữ liệu của tôi được chuẩn hóa (ba dạng đầu tiên của khóa học).Normalization vs denormalization khi sử dụng một khách hàng JSON với JAVA/RDBMS chồng
Câu hỏi của tôi có thể được minh họa bằng ví dụ sau.
Tôi có đối tượng Ví dụ và đối tượng Người dùng được máy chủ trả về.
Example - [{
userId:1,
...
...
..
},
{
userId:2,
...},
{
userId:3,
...}];
User - [
{
userId - 1,
firstName - "John",
lastName - "Doe",
..
},
{
userId - 2,
firstName - "Jane",
lastName - "Doe",
..
}, {...}...
]
Khi tôi xem qua bộ sưu tập Ví dụ sử dụng Góc "example_entry in example" và hiển thị phần tử Lấy mẫu, tôi chỉ có sẵn userId. Nhưng nếu tôi muốn hiển thị firstName và lastName, tôi không thể làm như nó trong bộ sưu tập "Người dùng" khác. Tôi phải viết một helper Điều khiển góc/dịch vụ phương pháp để có được firstName, lastName từ bộ sưu tập người dùng và buộc nó với các đối tượng bộ sưu tập mẫu.
Để tránh vấn đề này, tôi có thể De-Đồng hóa Ojbects Java và gửi ra đã sẵn sàng để sử dụng JSON như thế này ..
Example - [{
userId:1,
firstName - "John",
lastName - "Doe",
...
...
..
},
{
userId - 2,
firstName - "Jane",
lastName - "Doe",
...},
{
userId:3,
...}];
Nhưng là tốt/xấu/khủng khiếp này? Bởi vì bây giờ đối tượng miền Java của tôi có firstName, LastName trùng lặp trong đối tượng ví dụ và cũng là đối tượng người dùng. Bất kỳ lời khuyên nào về tuyến đường nào tốt hơn?
De-Normalize and have ready to use JSON
Keep Data Normalized to avoid duplication and write converter methods on the Client as needed
Liệu nó có nghĩa là tôi nên rời khỏi lớp học phụ trợ Java như nó vốn có và viết phương pháp helper để chuyển đổi JSON server-side để một JSON de-bình thường? Cảm ơn. – user6123723
Nếu đó là danh sách dữ liệu, hãy tạo chế độ xem với các trường bắt buộc trong DB và chỉ truy vấn nó thông qua mã ứng dụng của bạn, không cần chuyển đổi. Đối với một thực thể cập nhật \ dữ liệu cập nhật kịch bản gửi các thực thể dữ liệu chính xác thay vì làm bất kỳ normalization trên bakend – Chandermani
Nhưng sẽ không làm cho db lưu trữ không hiệu quả với không chuẩn hóa? Bây giờ nếu fName hoặc lName thay đổi, nó cần được cập nhật ở nhiều nơi. Ngoài ra không gian lưu trữ được sử dụng hiện nay còn nhiều hơn nữa. Những vấn đề này có phải không? – user6123723