Пол в базах данных
Кстати, кто как обозначает пол в таблицах баз данных (предположим, что типа enum у нас нет)?
Есть вариант «’f’, ’m’, ’u’», я обычно это делаю как «-1, 0, 1» (догадайтесь как мужчина), один разработчик у нас делает «1, 0, null» (догадайтесь где женщина), но я видел варианты «0, 1, 2», «’+’, ’’, ’-’» и множество других.
Мужские шовинистические свиньи.
Я бы сделал null, 0, 1[, 2... если требуется классификация нестандартных ситуаций]
Мне больше нравится вариант с битовыми масками.
Хотя почему «масками»… «флагами», скорее.
is_has_penis
Лучший вариант — с буквами. Сразу понятно без документации: male, female, unknown (unisex?).
В любых других вариантах без документации не разберёшься. Ну разве что «0» и «1» можно догадаться.
Комментарий для zencd.livejournal.com:
Это какой? is_has_penis по предложению Смирнова.
Ну, в принципе, хороший вариант. Флаги «имеется пенис», «имеются сиськи», тогда и shemale можно учитывать, ага.
Комментарий для wiktar.com:
1 и -1 нельзя догадаться? :)) А 0 и 1 очевиднее?
Комментарий для alax.myopenid.com:
null, 0, 1 — понятно. 2 — это что? Болезнь какая-то? :)
Комментарий для coprophagous.ru:
Shemale куда отнесёшь?
Национальность: Да
«is_male» по логике «все, кто не мужчины -- женщины» :-)
Комментарий для aire.livejournal.com:
А почему не is_female? Что за сексизм? :)
Комментарий для siberian-husky.livejournal.com:
Sex: oh, yeah! («Не грози Южному Централу, попивая сок у себя в квартале»)
Комментарий для Евгения Степанищева:
Ну shemale — это только начало… Зато какой задел на будущее!
А почему это у нас типа enum нету? :-)
Комментарий для splurov.livejournal.com:
Что за человек, всё объяснить надо. Ну… пусть СУБД его не поддерживает.
Комментарий для zencd.livejournal.com:
Ага, надо вводить поля: «социальный пол», «биологический пол» и так далее.
male, female, sometimes camel...
Комментарий для Евгения Степанищева:
Выкинь такую СУБД :-))
Если серьезно, то is_male (-1 — undefined, 0, 1)
Не is_female потому что мне, как разработчику-мужчине is_male ближе.
Комментарий для splurov.livejournal.com:
Это умозрительная задача. Кстати, СУБД такие встречаются и выкидывать их не нужно, они хороши.
-1 — это, конечно же, не undefined :) Прояви фантазию.
Комментарий для isk.livejournal.com:
значения: «|», «O», «^^»
Комментарий для Евгения Степанищева:
-1 не undefined, если колоночка называется gender ;-)
и вместо «|», «O», «^^» — «.!.», «Ø», «(o)(o)»
Комментарий для splurov.livejournal.com:
^^ — это camel :)
-1 — это мужик в расцвете сил
1 — это либо баба, либо мужик, который уже не мужик, а так
0 — это дупло где они живут
1^^ 1^^ 1^^ — корован
В одной системе есть 5 (пять) вариантов пола.
Когда понадобилась идентификация пар, автор не стал долго думать, и добавил для них 3 дополнительных пола.
F, M, null
oracle
Комментарий для alisey.myopenid.com:
Догадываюсь, что система называлась «Мамба» :)
Комментарий для eattheopera.myopenid.com:
Вы уж так серьёзно не относитесь :) «Oracle» :) В MySQL и даже mSQL это будет выглядеть так же :)
Кому нужен этот пол? Компьютеру надо лишь знать как обращаться к человеку, поэтому надо расширить выбор еще и статусом:
Г-н, Г-жа, М-р, М-с, и т. д.
Комментарий для ibnteo.livejournal.com:
Какая неожиданная точка зрения, ага.
echo ’Марина Силова получил’, $sex == ’Г-жа’ || $sex == ’М-с’ ? ’а’ : ’’, ’ сообщение.’;
Неожиданно! Свежо! Надо внедрять!
Ага. А с «’f’, ’m’, ’u’» видимо вот так, да? ))
echo ’Марина Силова получил’, $sex == ’f’ ? ’а’ : ($sex == ’ u’ ? ’о’ : ’’), ’ сообщение.’;
Вообще мне с моим махровым шовинизмом всегда хватало sex=[true, false] (угадайте где кто)
Но однажды заказчик захотел чтобы поле gender брало инфу из таблицы gender где изначально было три значения — male, femail, undefined. Он явно предполагал что этот список может когда-нить расшириться
Комментарий для kguryanov.livejournal.com:
По крайней мере там нет две записи на один пол.
Ну, догадаться легко: sex=true — люди с нормальной (и выше) половой конституцией, sex=false — без оной.
Заказчик правильно думал. Например, сайты знакомств предлагали сначала два пола, теперь там куча комбинаций, типа M+M, Ж+Ж, М+Ж. Ждём Ж+Ж+Ж, М+Ж+Ж, М+Ж+М и так далее.