Tôi có một bảng lưu trữ email Thư
(Ai mà ngờ được... ;)).
bởi Tinyint Trạng thái thư
, Tôi quyết định xem đây là SentMail, Draft hay AcceptedMail.
Bây giờ tôi thắc mắc Table-Split có phù hợp hơn không, nói có:
Đã gửi email
Bản nháp email
đã nhận được thư
Thay thế cờ tinyint của MailStatus.
Nhưng điều này cũng có nghĩa là tôi cần di chuyển các hàng (chèn vào một bảng, xóa trong bảng khác) khi người dùng xóa hoặc di chuyển thư, thay vì chỉ chuyển đổi giá trị int.
Bạn nghĩ gì về điều này?
Từ góc độ mã, việc xử lý các enum đơn giản hơn nhiều so với việc xử lý các loại khác nhau.
Từ góc độ cơ sở dữ liệu, lý do lưu trữ dữ liệu rất giống nhau trong các bảng khác nhau là:
- Vấn đề về hiệu suất
- Vấn đề về kích thước (bảng đơn trở nên quá lớn)
- Các vấn đề về tiêu chuẩn hóa cơ sở dữ liệu (giá trị null của trường SentDateTime, v.v.)
Trong hầu hết các trường hợp, bạn sẽ không bao giờ gặp phải bất kỳ vấn đề nào về kích thước/hiệu suất, vì vậy câu hỏi đặt ra là bạn cần chuẩn hóa dữ liệu của mình đến mức nào. Nếu bạn thực sự không quan tâm đến nó, đừng làm cho nó phức tạp hơn nữa:Giữ nó trong một bảng và sử dụng enum (int) trong bảng để phân biệt các trạng thái.
Tôi là một lập trình viên xuất sắc, rất giỏi!