2009-04-08 27 views

Trả lời

1

Bạn sẽ chỉ phải kiểm tra "IsFemale" đúng/sai?

Chẳng phải một cột như "Loại người" hay thứ gì đó như thế sẽ phù hợp hơn? Bằng cách đó, bạn có thể có "nữ", "nam", "công ty" và vv - nhiều giá trị có thể có hơn.

Marc

PS: nhưng nếu bạn chọn để sử dụng một cột (boolean) "bit", sau đó là "Có" hoặc "Có" tiền tố là một lựa chọn tốt, theo ý kiến ​​của tôi - làm cho nó khá rõ ràng đó là một boolean!

27

Nữ và nam là không loại trừ lẫn nhau, vì vậy bạn sẽ phải đưa ra một cái gì đó cho chuyển đổi giới tính, cả nam và nữ, vv

Để làm điều này như enterprisey càng tốt, tạo ra một cột GenderTypeID:

GenderTypes 
----------- 
GenderTypeID Name  Greeting 

     1  Male  Dear Sir 
     2  Female Dear Madam 
     3  Unisex Dear Sir and Madam 
     4  Unknown Dear Sir or Madam 
     5  Android Dear Artificial Life Form 

... v.v.

+0

...sản phẩm của công ty tôi có thứ như thế này. Các lựa chọn là nam, nữ, chuyển giới nam/nữ, chuyển giới nữ/nam, và một cái gì đó có nghĩa là vô tính, nghĩ rằng thuật ngữ chính xác cho người cuối cùng eludes tôi hiện nay. – rmeador

+0

Có lẽ bạn nên tham khảo MOOs khi đưa ra danh sách giới tính: "LambdaMOO hỗ trợ chỉ định tùy chỉnh giới tính và đi kèm với các giá trị đặt trước sau: nam tính, nam, nữ, hoặc Spivak, splat, số nhiều, tự do, hoàng gia và thứ 2 -người "từ http://en.wikipedia.org/wiki/LambdaMOO –

+1

Bạn cũng cần phải xem xét các thực thể pháp lý, chẳng hạn như các công ty. Chắc chắn không phải là nam hay nữ, nhưng không phải cả hai. –

6

Có thể đặt tên cột là "giới tính" (char với 'M', 'F') sẽ khiến tôi "nhạy cảm" hơn.

+0

Đây là những gì tôi sử dụng, nhưng không phải vì nó "nhạy cảm hơn". Tôi sử dụng nó bởi vì nó dễ đọc hơn, sử dụng nhiều không gian dữ liệu, và có thể được mở rộng để hỗ trợ các công ty và lưỡng tính nếu cần thiết. –

+3

@ John - Ký tự của tôi phải lớn hơn của bạn ... Tôi thích kéo dài ra và mất 8 bit. ;) –

0

Gender có vẻ là lựa chọn tốt hơn, nhưng nếu bạn muốn hoặc cần sử dụng cột boolean, chỉ có hai lựa chọn - IsMale hoặc IsFemale.

1

Điều gì là sai với "sex" cổ điển và hỗ trợ các loại phụ như M, F, vv ...

+1

nếu bạn phải loại bỏ cột này, thì mọi người sẽ nói về "loại bỏ giới tính khỏi lược đồ của chúng tôi" :-) – Vladimir

+2

Vâng, ngay bây giờ chúng ta đang nói về việc liệu chúng ta có nên quan hệ tình dục trong sơ đồ không. – Chuck

6

Vâng, điều điển hình là phải có "quan hệ tình dục" cột, nhưng bạn có thể kết thúc với khách hàng không biết gì đang cố gắng gửi nó với các giá trị là "hai lần một tuần".

Vấn đề khác là phụ thuộc vào ngôn ngữ của nó. Ví dụ: bằng tiếng Anh M có nghĩa là M an, trong khi tiếng Tây Ban Nha có nghĩa là M ujer (phụ nữ).

+1

Để khắc phục điều này, hãy làm cho nó 1 ký tự ... tất nhiên vẫn còn để lại "Y" làm câu trả lời ... –

+0

Hmmm. 'N' có phải là "trung tính" hay "không"? Chỉ cần suy nghĩ ... – EricSchaefer

+1

"hai lần một tuần" ... lol ... Cả hai đều là điểm tốt, tuy nhiên. –

3

isFemale chỉ ra một vấn đề lớn hơn với sơ đồ của bạn, một cái gì đó như thế nên được khái quát hóa, hoặc thậm chí có thể bình thường hóa ra:

Giống như, có một cột quan hệ tình dục trên bàn của bạn, mà là một FK vào một bảng quan hệ tình dục:

--------------------- 
| ID | Type  | 
|-------------------| 
| 1 | Male  | 
| 2 | Female  | 
| 3 | Yes Please | 
--------------------- 

Lưu ý, không thực sự làm điều này, ngớ ngẩn của nó, trừ khi bạn có kế hoạch hỗ trợ giới tính bất thường. Tôi vẫn nghĩ rằng một cột chung là tốt hơn so với một bit isFemale mặc dù.

44

Bạn nên gắn bó với ISO standard nếu có thể.

ISO/IEC 5218Công nghệ thông tin - Mã số cho các đại diện của giới con người là một tiêu chuẩn quốc tế xác định một đại diện của giới con người thông qua một mã duy nhất chữ số ngôn ngữ trung lập. ...

Bốn mã quy định tại tiêu chuẩn ISO/IEC 5218 là:

  • 0 = không biết,
  • 1 = nam,
  • 2 = nữ,
  • 9 = không áp dụng.

Tiêu chuẩn quy định rằng việc sử dụng nó có thể được chỉ định bởi người chỉ định "SEX".

+6

Dòng yêu thích của tôi: "Tiêu chuẩn nêu rõ rằng không có ý nghĩa nào được đặt trên thực tế là nam được mã hóa là 1 và nữ là 2. Mã hóa chỉ phản ánh thực tế hiện có ở các quốc gia đã khởi xướng tiêu chuẩn này". Vì vậy, không cần thiết về mặt chính trị chính xác –

+0

Ý tưởng tuyệt vời. Dễ dàng tranh luận, hành vi tiêu chuẩn hóa! Không biết về nó. –

+0

@ John: "unnecessariry" có thể được tranh cãi và phụ thuộc rất nhiều vào ngữ cảnh, nhưng điều tốt là: PC không bị tổn thương ở đây. –

0

Nếu bạn đang yêu cầu nếu nó buồn cười, điều đó phụ thuộc. Liệu isMale có tốt hơn không, bạn là người ăn chay? (Chỉ đùa thôi!)

Đoán của tôi là bất cứ ai thiết kế cơ sở dữ liệu đều nghĩ về các quy tắc kinh doanh đặc biệt dành cho phái nữ và được thiết kế theo cách này.

Có thực sự không phải là lý do tại sao nam phải đúng và nữ nên sai, và có thể cơ sở dữ liệu của bạn kém hiệu quả trong việc sử dụng so sánh nhân vật và ký tự.

Từ quan điểm lập trình, tránh boolean trong bảng có lý do vì lý do tương tự để tránh booleans trong các tham số chức năng có ý nghĩa.

1

Mỗi cơ sở dữ liệu mà tôi từng làm việc đã sử dụng tên cột là Giới tính có giá trị 0 cho Nữ và 1 cho Nam. Tôi đã luôn luôn giả định những giá trị này đã được chỉ định theo cùng một cách mà thiết bị điện tử có kết nối được mô tả là nữ hoặc nam.

Có hay không IsFemale là buồn cười phụ thuộc vào ý định của hệ thống, tuy nhiên nó dường như đã vẽ ứng dụng vào một góc. Ví dụ, các trường giới tính có thể được phát triển để chứa thêm "loại" nhưng IsFemale rõ ràng chỉ bao giờ là đúng hoặc sai và do đó không thể mở rộng được.

0

Đối với các hệ thống đơn giản, nơi không có sự mơ hồ về tình dục, tôi sử dụng IsMale. Cách khác là sử dụng bảng tra cứu nếu các yêu cầu của bạn bao gồm các cá nhân được chuyển giới. Nếu bạn chỉ có nam và nữ, việc sử dụng bất cứ thứ gì khác ngoài giá trị boolean sẽ dẫn đến sự phức tạp không cần thiết và sự mơ hồ đối với hệ thống.

2

Rõ ràng người hỏi có liên quan (đúng) về sự thất bại của nhà thiết kế cơ sở dữ liệu để tính đến ngôn ngữ trung lập về giá trị.

(Xin lưu ý rằng chính trị đúng đắn là (đúng) không còn được coi là chấp nhận, ngôn ngữ giá trị trung lập.)

Là một nhà thiết kế máy tính, bạn có nghĩa vụ đặc biệt để đảm bảo thiết kế của bạn không, inadvertantly hay không , bao gồm hoặc tuyên truyền ưu tiên giới tính hoặc ưu thế.

Trong khi nhà thiết kế có thể đã ngây thơ giả định IsFemale sẽ cung cấp cho nữ 1 và do đó cao hơn/giá trị cao hơn, giá trị thực thường được cho giá trị -1. Chưa kể đến các nền văn hóa nơi 0 là một giá trị thiêng liêng.

Trong phần tiếp theo của tuần tới, chúng tôi sẽ đề cập đến những người liên hệ và lý thuyết kỳ quặc và ý nghĩa của nó đối với các tiêu chuẩn đặt tên biến.

+2

Tôi nghĩ thậm chí còn có lý do kỹ thuật để không gọi nó như thế. Nó không phải là một trường boolean ngữ nghĩa. Câu hỏi mà nó cố gắng trả lời là (thường) không: "người này có phải là nữ không?", Mà đúng hơn là "người quan hệ tình dục này là gì?" Và câu trả lời cho điều đó không phải là "đúng" hay "sai". –

+0

Và: sẽ không cho * hoặc * sex một cách điều trị ưu tiên khiến nó không phải là PC ... err. ... không có giá trị trung lập? –

Các vấn đề liên quan