Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 выбор значений для поля  [new]
viborsql
Guest
У меня один простенький вопрос,

Сейчас начала изучать SQL и не смогла найти литературу, где было бы сказано, как можно для поля "пол" указать два варианта: "мужской" и "женский". И по умолчанию указать "мужской".
25 окт 16, 00:19    [19817993]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
ABCC
Guest
viborsql,

>>два варианта: "мужской" и "женский"
https://msdn.microsoft.com/en-us/library/ms190377(v=sql.110).aspx

>>по умолчанию
https://msdn.microsoft.com/en-us/library/ms187872(v=sql.110).aspx
25 окт 16, 00:52    [19818007]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
viborsql,

Классический пример построения.
создайте таблицу-справочник полов, создайте первичный ключ.
создайте Таблицу, которая будет ссылаться на этот справочник внешним ключом, укажите для поля - ссылки значение по умолчанию.

Не классически заполняете поле числами 1 или 2 и в клиентском приложении превращаете эти числа в слова М и Ж.
Для поля задаёте значение по умолчанию при создании таблицы.
25 окт 16, 10:18    [19818606]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
viborsql,

пол может быть не только мужской и женский.
Так что справочник и ссылка на него - наиболее правильное решение.
25 окт 16, 10:34    [19818672]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
iap
viborsql,

пол может быть не только мужской и женский.
Так что справочник и ссылка на него - наиболее правильное решение.

Male, female, sometimes camel :)
справочник будет наиболее правильно(в него 0 - не выяснено) + FK и DEFAULT 0
25 окт 16, 10:41    [19818697]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
o-o
Guest
iap
viborsql,
пол может быть не только мужской и женский.
Так что справочник и ссылка на него - наиболее правильное решение.

на каждый подобный пук (2 возможных значения, к-ые не меняются с вероятностью 99%)
справочник создавать?
и какой еще-то пол, вы видели, чтобы в паспорте вписывали "гей"?
битовое поле пускай заведет, допустимых значений всего 2,
джойнить ничего не надо, умолчание пусть будет 1, т.е. "м".
но если вам еще и верблюдов из поста выше надо хранить, то можно и char(1)
25 окт 16, 11:33    [19819014]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
o-o
iap
viborsql,
пол может быть не только мужской и женский.
Так что справочник и ссылка на него - наиболее правильное решение.

на каждый подобный пук (2 возможных значения, к-ые не меняются с вероятностью 99%)
справочник создавать?
и какой еще-то пол, вы видели, чтобы в паспорте вписывали "гей"?
битовое поле пускай заведет, допустимых значений всего 2,
джойнить ничего не надо, умолчание пусть будет 1, т.е. "м".
но если вам еще и верблюдов из поста выше надо хранить, то можно и char(1)
Гермафродит - кто? Или их не бывает? Они не граждане страны что ли?
Могу и ещё назвать парочку.
Паспорт-то здесь при чём?
А справочник и для двух значений не помешает.
25 окт 16, 11:39    [19819044]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31994
o-o
и какой еще-то пол, вы видели, чтобы в паспорте вписывали "гей"?
"гей" - разве это пол?
Пол - м, ж, и транс, других вроде нету.
25 окт 16, 11:39    [19819045]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
Пол нужен для правильного склонения и выбора обращения, больше ни для чего.
А как обращаются к гермафродиту - "оно"?
25 окт 16, 12:11    [19819229]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Владислав Колосов
Пол нужен для правильного склонения и выбора обращения, больше ни для чего.
А как обращаются к гермафродиту - "оно"?

да хоть и они, появление в обозримом будущем "оно" в значениях совсем даже не нулевое, ну и закон Мерфи намекает туда же, так что справочник.
25 окт 16, 12:20    [19819287]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
o-o
Guest
iap
Гермафродит - кто? Или их не бывает? Они не граждане страны что ли?
Могу и ещё назвать парочку.
Паспорт-то здесь при чём?
А справочник и для двух значений не помешает.

паспорт как раз при том, что именно оттуда значение перекочевывает в таблицу.
давайте, покажите картинкой, где в паспорте числится гермафродит.
и справочник для двух значений еще как помешает.
потому что если я вывожу в отчет данные и о клиенте,
и о том, кому задолжал, и данные юриста, и всем троим паспортные данные,
то у меня уже 3 никому не нужных соединения.
будто у меня других соединений мало.
только не надо нести про экономию места в таблице.
хранить ид_справочника равно либо дороже по занимаемому месту,
если сравнивать с полем типа бит или чар(1).
и обновлять сие тоже никто не собирается, ибо это как раз равносильно смене паспорта
по причине "смена пола".
итого, надобность в нормализации отпала сама собой, а вот ненужных джойнов вы уже навязали
25 окт 16, 12:53    [19819462]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
o-o
iap
Гермафродит - кто? Или их не бывает? Они не граждане страны что ли?
Могу и ещё назвать парочку.
Паспорт-то здесь при чём?
А справочник и для двух значений не помешает.

паспорт как раз при том, что именно оттуда значение перекочевывает в таблицу.
давайте, покажите картинкой, где в паспорте числится гермафродит.
и справочник для двух значений еще как помешает.
потому что если я вывожу в отчет данные и о клиенте,
и о том, кому задолжал, и данные юриста, и всем троим паспортные данные,
то у меня уже 3 никому не нужных соединения.
будто у меня других соединений мало.
только не надо нести про экономию места в таблице.
хранить ид_справочника равно либо дороже по занимаемому месту,
если сравнивать с полем типа бит или чар(1).
и обновлять сие тоже никто не собирается, ибо это как раз равносильно смене паспорта
по причине "смена пола".
итого, надобность в нормализации отпала сама собой, а вот ненужных джойнов вы уже навязали
Вот что. Я не собираюсь спорить.
И не признаю вашего права устанавливать здесь правила - что и как писать в теме на форуме.
Я написал так, как считаю нужным. Высказывайте своё мнение, никто вроде и не мешает.
Вот, вкратце, как-то так.
25 окт 16, 13:19    [19819561]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
o-o
Guest
to iap:

белены не перекушали на завтрак?
какие еще правила?
ваше право отстаивать мнение о гермафродитах без паспорта
(даже не сомневаюсь, что именно это и надо ТС ),
мое право разнести в пух и прах теорию о необходимости нормализации
(вынесении в справочник) инфо о gender (sex), ибо принимает поле всего 2 возможных значения
и обновлению не подлежит.

мое обоснование таково:
нормализация преследует цель избавления от хранения избыточной информации.
ибо: обычно меньше места занимает ид_справочника по сравнению с размером данных самого поля
и потому что в случае обновления значения в варианте со справочником обновляем всего в одном месте,
а получаем затем обновленное везде.

ну так я утверждаю, что в случае пола это "нормализация ради нормализации"
т.к. про хранение уже сказано: чар(1) или бит не займут места больше, чем любой тип, выбранный под ид_справочника.
ну а обновления вообще не будет, т.к. мужской и женский пол завтра ни во что другое не переименуют,
а если же обновится паспорт субъекта, то обновим и *относящиеся только к нему* данные
---
теперь скажите, ради чего еще надо нормализовать пол,
какой будет выигрыш (увеличение соединений на запрос это минус, не плюс)
25 окт 16, 13:35    [19819678]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
o-o,
а что клиенту показывать? проблема клиента?
25 окт 16, 13:52    [19819793]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
o-o
Guest
TaPaK
o-o,
а что клиенту показывать? проблема клиента?

case:
declare @t table(id int, b bit, c char(1));
insert @t values(1, 1, 'm'), (2, 0, 'f');

select id, 
       case b when 1 then N'мужской' else N'женский' end as sex_b,
       case c when 'm' then N'мужской' when 'f' then N'женский' end as sex_c
from @t;
25 окт 16, 14:03    [19819846]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
o-o
TaPaK
o-o,
а что клиенту показывать? проблема клиента?

case:
declare @t table(id int, b bit, c char(1));
insert @t values(1, 1, 'm'), (2, 0, 'f');

select id, 
       case b when 1 then N'мужской' else N'женский' end as sex_b,
       case c when 'm' then N'мужской' when 'f' then N'женский' end as sex_c
from @t;

главное никогда не захотеть делать мультиязычность или просто сменить язык
25 окт 16, 14:15    [19819922]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
Вычисляемое поле для имени плюс констрейнт, чтобы не вставили лишнего, если гарантируется конечное число вариантов значения. Но это не канон. В каноне конечность вариантов не гарантируется.

Но практика - критерий истины, надо учитывать и накладные расходы.
25 окт 16, 14:23    [19819958]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
o-o
Guest
TaPaK
главное никогда не захотеть делать мультиязычность или просто сменить язык

я чего-то не понимаю или бит на разных языках что-то иное кроме как 1,0 принимает?
как хотите, так и расшифровываете его потом.
---
в первом посте четко сказано:
автор
как можно для поля "пол" указать два варианта: "мужской" и "женский"

2 (два) варианта, кириллицей, "мужской" / "женский"
но развели тут теорию гермафродитов, а меня в диктаторы записали, зашибись
---
viborsql ,
вот так объявите свое поле:
create table ...( ..., sex bit default(1), ...);

расшифровка поля выше по теме в кэйсе
25 окт 16, 14:44    [19820101]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
Тема-то простая, но фундаментальная! :)
25 окт 16, 17:47    [19821121]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
o-o
Guest
...но не для слабонервных.
ущемляет в правах сексуальные меньшинства.
ТС первая же и ущемляет: всего 2 значения хочет в поле сложить,
да еще и кириллицей
налицо притеснение гермафродитов и нерусскоязычных
25 окт 16, 18:08    [19821207]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
o-o
...но не для слабонервных.
ущемляет в правах сексуальные меньшинства.
ТС первая же и ущемляет: всего 2 значения хочет в поле сложить,
да еще и кириллицей
налицо притеснение гермафродитов и нерусскоязычных

а это???
автор
И по умолчанию указать "мужской".
25 окт 16, 18:10    [19821215]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
o-o
Guest
патриархат, или же мусульманские веяния
25 окт 16, 18:19    [19821240]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
Правильно, во многих языках "человек" подразумевается "мужчина".
25 окт 16, 18:23    [19821250]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
Владислав Колосов
Правильно, во многих языках "человек" подразумевается "мужчина".
Угу. Встречался, помню такое:
Поле на оракле number(12)
1 = жен
всё остальное = муж
Какая-то прям дискриминация! )))
26 окт 16, 01:48    [19822091]     Ответить | Цитировать Сообщить модератору
 Re: выбор значений для поля  [new]
o-o
Guest
Makar4ik
Владислав Колосов
Правильно, во многих языках "человек" подразумевается "мужчина".
Угу. Встречался, помню такое:
Поле на оракле number(12)
1 = жен
всё остальное = муж
Какая-то прям дискриминация! )))

Оригинальная трактовка слов Колосова
Мне показалось, он говорит, на инглише man это и мужчина, и человек,
то же самое на ит: uomo = человек, мужчина;
армянский https://goo.gl/images/n1itRK = человек, мужчина
26 окт 16, 08:37    [19822263]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить