Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

Пол в базах данных

Кстати, кто как обозначает пол в таблицах баз данных (предположим, что типа enum у нас нет)?

Есть вариант «’f’, ’m’, ’u’», я обычно это делаю как «-1, 0, 1» (догадайтесь как мужчина), один разработчик у нас делает «1, 0, null» (догадайтесь где женщина), но я видел варианты «0, 1, 2», «’+’, ’’, ’-’» и множество других.

33 комментария
coprophagous.ru 2008

Мужские шовинистические свиньи.

roman (alax.myopenid.com) 2008

Я бы сделал null, 0, 1[, 2... если требуется классификация нестандартных ситуаций]

zencd.livejournal.com 2008

Мне больше нравится вариант с битовыми масками.

zencd.livejournal.com 2008

Хотя почему «масками»… «флагами», скорее.

coprophagous.ru 2008

is_has_penis

wiktar (wiktar.com) 2008

Лучший вариант — с буквами. Сразу понятно без документации: male, female, unknown (unisex?).

В любых других вариантах без документации не разберёшься. Ну разве что «0» и «1» можно догадаться.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для zencd.livejournal.com:

Это какой? is_has_penis по предложению Смирнова.

Ну, в принципе, хороший вариант. Флаги «имеется пенис», «имеются сиськи», тогда и shemale можно учитывать, ага.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для wiktar.com:

1 и -1 нельзя догадаться? :)) А 0 и 1 очевиднее?

Евгений Степанищев (bolknote.ru) 2008

Комментарий для alax.myopenid.com:

null, 0, 1 — понятно. 2 — это что? Болезнь какая-то? :)

Евгений Степанищев (bolknote.ru) 2008

Комментарий для coprophagous.ru:

Shemale куда отнесёшь?

siberian-husky.livejournal.com 2008

Национальность: Да

aire.livejournal.com 2008

«is_male» по логике «все, кто не мужчины -​-​ женщины» :-)

Евгений Степанищев (bolknote.ru) 2008

Комментарий для aire.livejournal.com:

А почему не is_female? Что за сексизм? :)

Евгений Степанищев (bolknote.ru) 2008

Комментарий для siberian-husky.livejournal.com:

Sex: oh, yeah! («Не грози Южному Централу, попивая сок у себя в квартале»)

zencd.livejournal.com 2008

Комментарий для Евгения Степанищева:

Ну shemale — это только начало… Зато какой задел на будущее!

splurov.livejournal.com 2008

А почему это у нас типа enum нету? :-)

Евгений Степанищев (bolknote.ru) 2008

Комментарий для splurov.livejournal.com:

Что за человек, всё объяснить надо. Ну… пусть СУБД его не поддерживает.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для zencd.livejournal.com:

Ага, надо вводить поля: «социальный пол», «биологический пол» и так далее.

isk.livejournal.com 2008

male, female, sometimes camel...

splurov.livejournal.com 2008

Комментарий для Евгения Степанищева:

Выкинь такую СУБД :-))

Если серьезно, то is_male (-1 — undefined, 0, 1)
Не is_female потому что мне, как разработчику-мужчине is_male ближе.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для splurov.livejournal.com:

Это умозрительная задача. Кстати, СУБД такие встречаются и выкидывать их не нужно, они хороши.

-1 — это, конечно же, не undefined :) Прояви фантазию.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для isk.livejournal.com:

значения: «|», «O», «^^»

splurov.livejournal.com 2008

Комментарий для Евгения Степанищева:

-1 не undefined, если колоночка называется gender ;-)

и вместо «|», «O», «^^»  — «.!.», «Ø», «(o)(o)»

Евгений Степанищев (bolknote.ru) 2008

Комментарий для splurov.livejournal.com:

^^ — это camel :)

Alisey (alisey.myopenid.com) 2008

-1  — это мужик в расцвете сил
1 — это либо баба, либо мужик, который уже не мужик, а так
0 — это дупло где они живут
1^^ 1^^ 1^^ — корован

Alisey (alisey.myopenid.com) 2008

В одной системе есть 5 (пять) вариантов пола.
Когда понадобилась идентификация пар, автор не стал долго думать, и добавил для них 3 дополнительных пола.

eattheopera.myopenid.com 2008

F, M, null
oracle

Евгений Степанищев (bolknote.ru) 2008

Комментарий для alisey.myopenid.com:

Догадываюсь, что система называлась «Мамба» :)

Евгений Степанищев (bolknote.ru) 2008

Комментарий для eattheopera.myopenid.com:

Вы уж так серьёзно не относитесь :) «Oracle» :) В MySQL и даже mSQL это будет выглядеть так же :)

ibnteo.livejournal.com 2008

Кому нужен этот пол? Компьютеру надо лишь знать как обращаться к человеку, поэтому надо расширить выбор еще и статусом:
Г-н, Г-жа, М-р, М-с, и т. д.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для ibnteo.livejournal.com:

Какая неожиданная точка зрения, ага.

echo ’Марина Силова получил’, $sex == ’Г-жа’ || $sex == ’М-с’ ? ’а’ : ’’, ’ сообщение.’;

Неожиданно! Свежо! Надо внедрять!

kguryanov.livejournal.com 2008

Ага. А с «’f’, ’m’, ’u’» видимо вот так, да? ))

echo ’Марина Силова получил’, $sex == ’f’ ? ’а’ : ($sex == ’ u’ ? ’о’ : ’’), ’ сообщение.’;

Вообще мне с моим махровым шовинизмом всегда хватало sex=[true, false] (угадайте где кто)

Но однажды заказчик захотел чтобы поле gender брало инфу из таблицы gender где изначально было три значения — male, femail, undefined. Он явно предполагал что этот список может когда-нить расшириться

Евгений Степанищев (bolknote.ru) 2008

Комментарий для kguryanov.livejournal.com:

По крайней мере там нет две записи на один пол.

Ну, догадаться легко: sex=true — люди с нормальной (и выше) половой конституцией, sex=false — без оной.

Заказчик правильно думал. Например, сайты знакомств предлагали сначала два пола, теперь там куча комбинаций, типа M+M, Ж+Ж, М+Ж. Ждём Ж+Ж+Ж, М+Ж+Ж, М+Ж+М и так далее.