Tôi đang làm việc với phiên bản mới của ứng dụng của bên thứ ba. Trong phiên bản này, cấu trúc cơ sở dữ liệu được thay đổi, họ nói "để cải thiện hiệu suất".Đây có phải là thiết kế cơ sở dữ liệu "đúng" không?
Các phiên bản cũ của DB có một cấu trúc chung như thế này:
TABLE ENTITY
(
ENTITY_ID,
STANDARD_PROPERTY_1,
STANDARD_PROPERTY_2,
STANDARD_PROPERTY_3,
...
)
TABLE ENTITY_PROPERTIES
(
ENTITY_ID,
PROPERTY_KEY,
PROPERTY_VALUE
)
vì vậy chúng tôi đã có một bảng chính với các lĩnh vực cho các thuộc tính cơ bản và một bảng riêng biệt để quản lý các thuộc tính tùy chỉnh thêm bởi người dùng.
Phiên bản mới của DB insted có cấu trúc như thế này:
TABLE ENTITY
(
ENTITY_ID,
STANDARD_PROPERTY_1,
STANDARD_PROPERTY_2,
STANDARD_PROPERTY_3,
...
)
TABLE ENTITY_PROPERTIES_n
(
ENTITY_ID_n,
CUSTOM_PROPERTY_1,
CUSTOM_PROPERTY_2,
CUSTOM_PROPERTY_3,
...
)
Vì vậy, bây giờ khi người dùng thêm một thuộc tính tùy chỉnh, một cột mới sẽ được thêm vào ENTITY_PROPERTY
bảng hiện tại cho đến khi số max của cột (được quản lý bởi ứng dụng) đạt được, sau đó một bảng mới được tạo ra.
Vì vậy, câu hỏi của tôi là: Đây có phải là cách chính xác để thiết kế cấu trúc DB không? Đây có phải là cách duy nhất để "tăng hiệu suất" không? Cấu trúc cũ yêu cầu nhiều người tham gia hoặc chọn lựa phụ, nhưng cấu trúc này dường như không phải tôi rất thông minh (hoặc thậm chí chính xác) ...
"chờ ngày bạn chạy vào số lượng bảng tối đa cho mỗi cơ sở dữ liệu" ... nhưng sau đó bạn chỉ có thể tạo cơ sở dữ liệu mới ;-) +1 để xem kiến trúc tổng thể và muốn tôi có thể cung cấp +1 khác cho cascading chi phí của tái kỹ thuật DAL, đơn vị kiểm tra, ... –