Có, char
là loại dữ liệu chính xác cho việc này. Nguyên tắc chung là: luôn chọn loại dữ liệu hẹp nhất (hạn chế nhất) trong ngữ cảnh. Điều này có nghĩa rằng bất kỳ dữ liệu không hợp lệ (hoặc ngoài phạm vi) sẽ không được chấp nhận nếu nó được nhập ngẫu nhiên, do đó chương trình/cơ sở dữ liệu của bạn sẽ trở nên ít bị lỗi.
Để xem xét từ góc độ khác: khi muốn sử dụng giá trị số nguyên trong mã, bạn có tạo một mảng nguyên có kích thước không? Tất nhiên là không, bởi vì mặc dù nó sẽ thực hiện công việc, nó là khá không cần thiết. ví dụ: Hãy so sánh:
int[] value = new int[1] { 123 };
value[0] = 456;
tới:
int value = 123;
value = 456;
Đầu tiên là đơn giản vô lý, như tôi chắc chắn rằng bạn nhìn thấy. Chắc chắn, điều này không rõ ràng trong bối cảnh cơ sở dữ liệu (sử dụng đơn giản nếu bạn chọn loại dữ liệu string
), nhưng tôi nghĩ sự tương tự giúp giải thích logic đằng sau sự lựa chọn.
Ngoài ra, khi điều chỉnh các giá trị trong mã, bạn nên tìm trường có loại dữ liệu thích hợp hơn (ví dụ: char
).
Xét về hiệu suất, tôi sẽ không tưởng tượng rằng việc sử dụng string
sẽ cung cấp cho bạn mọi chi phí đáng kể. Ok, do đó, nó chiếm nhỏ hơn bộ nhớ khác, nhưng đó có thể không phải là vấn đề. Tuy nhiên, tôi nghĩ rằng các lý do khác mà tôi vừa đề xuất giải thích tại sao bạn nên chọn char
.
(Toàn bộ tiếp tuyến, nhưng theo gợi ý, tôi muốn tránh lưu trữ giới tính dưới dạng boolean - không giới hạn đối với người giới tính, người chuyển giới và người chuyển giới.) –
@Conrad, vui lòng đọc lại câu hỏi. Tôi đã đưa ra ba ví dụ riêng biệt: (1) giới tính (không phải giới tính, nhưng giới tính theo nghĩa sinh học), có thể là M hoặc F; (2) giữa ban đầu, có thể là bất kỳ chữ cái nào; và (3) một chỉ số không xác định, có thể là Y hoặc N. Câu hỏi của tôi không liên quan gì đến bản sắc giới tính. –
@ John: Re: (1): Bạn vẫn chưa bao gồm những người có liên quan đến sinh học. Re: phần còn lại: Có, đó là lý do tại sao tôi nói nó là tiếp tuyến. –