Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Составной уникальный индекс и NULL / 24 сообщений из 24, страница 1 из 1
29.09.2020, 09:34
    #40003783
edward_sh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
Добрый день, джентельмены!
Имеется таблица:
ID - счетчик
FName - nvarchar
SName - nvarchar
TName - nvarchar
PassSer - int
PassNum - int
IDPrev - int

Для однозначной идентификации человека и недопущения дублей решено сделать составной уникальный индекс
по этим полям (кроме ID, IDPrev конечно). Все бы ничего, но на просторах нашей страны, встречаются люди у которых отчество отсутствует, как класс. При этом в поле отчества заносится NULL.
Как отнесется сервер к такой ситуации? Удастся ли вставить запись с другими ФИО, но с NULL в отчестве?
После беглого чтения BOL создается впечатление, что так сделать будет нельзя.
Ситуацию, что человек сменил паспорт(утерял, поменял и т.д.) решает оператор, устанавливая поле IDPrev на предыдущую запись с таким ФИО или оставляет NULL. Т.е. при смене паспорта изначально считаем человека новым в этой базе.

Сервер 2008 R2
...
Рейтинг: 0 / 0
29.09.2020, 10:26
    #40003823
waszkiewicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
edward_sh,
странноватый мягко говоря, подход. ID гражданина нет в РФ?
...
Рейтинг: 0 / 0
29.09.2020, 10:32
    #40003829
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
edward_sh
Добрый день, джентельмены!
Имеется таблица:
ID - счетчик
FName - nvarchar
SName - nvarchar
TName - nvarchar
PassSer - int
PassNum - int
IDPrev - int

Для однозначной идентификации человека и недопущения дублей решено сделать составной уникальный индекс
по этим полям (кроме ID, IDPrev конечно). Все бы ничего, но на просторах нашей страны, встречаются люди у которых отчество отсутствует, как класс. При этом в поле отчества заносится NULL.
Как отнесется сервер к такой ситуации? Удастся ли вставить запись с другими ФИО, но с NULL в отчестве?
После беглого чтения BOL создается впечатление, что так сделать будет нельзя.
Ситуацию, что человек сменил паспорт(утерял, поменял и т.д.) решает оператор, устанавливая поле IDPrev на предыдущую запись с таким ФИО или оставляет NULL. Т.е. при смене паспорта изначально считаем человека новым в этой базе.

Сервер 2008 R2


Создать тестовую таблицу и вставить в нее записи займет 10 минут.
...
Рейтинг: 0 / 0
29.09.2020, 10:37
    #40003835
Guf
Guf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
edward_sh,

Реально, взять и проверить быстрее, чем писать вопрос на форуме
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
use tempdb
go
create table tst1(
    ID int not null identity(1, 1) primary key
  , FName nvarchar(100)
  , SName nvarchar(100)
  , TName nvarchar(100)
  constraint FullName unique (FName, SName, TName)
);
go

insert into tst1(FName, SName, TName)
values (N'Иванов', N'Иван', N'Иванович')
go


insert into tst1(FName, SName)
values (N'Иванов', N'Иван')
go


insert into tst1(FName, SName)
values (N'Иванов', N'Пётр')
go

insert into tst1(FName, SName)
values (N'Иванов', N'Иван')
go

select * from tst1

go
drop table tst1
...
Рейтинг: 0 / 0
29.09.2020, 11:37
    #40003875
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
edward_sh
Для однозначной идентификации человека и недопущения дублей

Вы удивитесь, узнав как много в России полных тезок!
Расширяйте ваш уникальный индекс хотя бы добавив ИНН.
...
Рейтинг: 0 / 0
29.09.2020, 11:39
    #40003877
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
SQL2008
хотя бы добавив ИНН


Просто ИНН уже достаточно.
...
Рейтинг: 0 / 0
29.09.2020, 13:25
    #40003936
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
msLex
SQL2008
хотя бы добавив ИНН


Просто ИНН уже достаточно.

У некоторых его попросту нет.
Конечно и в этом случае есть вероятность напороться на полное совпадение ФИО + пустой ИНН.
Но все-таки гораздо реже чем просто ФИО.
...
Рейтинг: 0 / 0
29.09.2020, 13:26
    #40003938
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
Говоря "нет ИНН" я имел в виду, что не знает и не особо старается его узнать.
...
Рейтинг: 0 / 0
29.09.2020, 13:29
    #40003941
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
SQL2008
msLex
пропущено...


Просто ИНН уже достаточно.

У некоторых его попросту нет.
Конечно и в этом случае есть вероятность напороться на полное совпадение ФИО + пустой ИНН.
Но все-таки гораздо реже чем просто ФИО.


В этом случае, правильнее сделать два фильтрованных индекса
По Инн, когда он есть, и по прочим полям, когда его нет.
...
Рейтинг: 0 / 0
29.09.2020, 13:47
    #40003953
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
SQL2008
Говоря "нет ИНН" я имел в виду, что не знает и не особо старается его узнать.

Значит ему достаточно помочь, запросив соответствующую систему самостоятельно.
...
Рейтинг: 0 / 0
29.09.2020, 14:51
    #40004009
edward_sh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
ИНН гарантирует некую уникальность в некотором промежутке времени.
Человек переехал из одного района города в другой - ИНН сменился...
Была мысль использовать СНИЛС, запретили ведомственным указом требовать дополнительные документы.
Оно конечно можно попробовать, но на ровном месте отгребать пилюлей - не хочется...
Запрос ИНН - кто будет этим заниматься, оно им надо?

По ссылке https://docs.microsoft.com/ru-ru/sql/relational-databases/indexes/create-unique-indexes?view=sql-server-ver15 говорится:
Нельзя создать уникальный индекс для одного столбца, если в более чем одной строке этого столбца содержится значение NULL. Нельзя также создать уникальный индекс для нескольких столбцов, если в более чем одной строке такой комбинации столбцов содержится значение NULL. При индексировании такие значения будут рассматриваться как дубликаты.

Откуда и растут ноги вопроса...
...
Рейтинг: 0 / 0
29.09.2020, 14:54
    #40004011
НеофитSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
Добавить к полному имени дату+город рождения - будет уникальность. Иначе тёзки достанут.

Местная полиция считает полное имя плюс дату достаточным идентификатором для своих целей.
...
Рейтинг: 0 / 0
29.09.2020, 14:56
    #40004012
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
edward_sh
Человек переехал из одного района города в другой - ИНН сменился...

Что?


https://www.nalog.ru/rn77/fl/interest/inn/ ИНН физического лица
ИНН — идентификационный номер налогоплательщика. Он присваивается один раз, используется на всей территории РФ и не меняется, даже если налогоплательщик меняет место жительства, фамилию и другие паспортные данные. При желании в любой налоговой инспекции можно получить Свидетельство о постановке на учет физического лица.


edward_sh
Нельзя создать уникальный индекс для одного столбца, если в более чем одной строке этого столбца содержится значение NULL


Можно. Фильтрованный.
...
Рейтинг: 0 / 0
29.09.2020, 15:04
    #40004015
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
edward_sh
Нельзя создать уникальный индекс для одного столбца, если в более чем одной строке этого столбца содержится значение NULL.
Откуда и растут ноги вопроса...


Страдалец, тут написано:
"
NULL
NULL
это не уникально.
"
Что, в общем то, очевидно.

Однако поля уникального индекса МОГУТ содержать значение NULL.
Только Primary key поражен в правах.
...
Рейтинг: 0 / 0
29.09.2020, 15:44
    #40004035
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
НеофитSQL
Местная полиция считает полное имя плюс дату достаточным идентификатором для своих целей.

Есть прецеденты, когда совпадало все и ФИО, и дата рождения!
Обычно это выявлялось в аэропорту с билетами на руках...
Бац!
А человек оказывается в розыске!
Отпуск насмарку, билеты пропали, подруга в слезах...
...
Рейтинг: 0 / 0
29.09.2020, 16:30
    #40004052
edward_sh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
To SQL2008:
Не далее, чем пару-тройку месяцев назад, при вводе списка групп на обучение, выявились В ОДНОЙ группе ПОЛНЫЕ тезки, включая дату рождения. Один был с юга, второй с севера области...

To MsLex:
Возможно, что что-то изменилось. Но когда я 15 лет назад сменил район проживания в пределах одного города, меня очень настойчиво попросили прийти в районную налоговую и поменять ИНН... Хотя за давностью лет, могу и попутать что-то...

To Aleks222:
Если бы в приведенной мною ссылке (официальной, если что) было бы об этом сказано, то и такого глупого вопроса я бы не задавал.
Вся проблема в том, что не все нюансы описаны в документации, и приходится выяснять это у благородного сообщества.
...
Рейтинг: 0 / 0
29.09.2020, 16:45
    #40004056
edward_sh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
To MsLex:
https://spmag.ru/articles/menyaetsya-li-inn-pri-smene-mesta-zhitelstva
Вопрос со свидетельством нужно рассмотреть подробнее. Дело в том, что на образце этого документа от 2004 года указан перечень случаев, когда нужно поменять свидетельство. В этом списке числится также и переезд на новое место проживания на другую территорию, то есть туда, где учет будет осуществляться другим подразделением.

Но при этом сама налоговая не требует этого от граждан, в своих пояснениях она говорит, что замена ИНН, при смене места жительства в том числе, не предусмотрена, ни в статье 23 НК РФ, ни в Порядке присвоения и выдачи ИНН.
...
Рейтинг: 0 / 0
29.09.2020, 16:47
    #40004057
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
SQL2008
edward_sh
Для однозначной идентификации человека и недопущения дублей

Вы удивитесь, узнав как много в России полных тезок!

С одним и тем же номером и серией паспорта?
...
Рейтинг: 0 / 0
29.09.2020, 17:04
    #40004069
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
ИНН не меняется при переезде, но в принципе он может изменяться в каких-то случаях.
В качестве идентификатора нужно использовать СНИЛС. Он не меняется, разве что в теории при смене пола (контрольный разряд зависит от пола).
...
Рейтинг: 0 / 0
29.09.2020, 17:08
    #40004073
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
edward_sh
Добрый день, джентельмены!
Имеется таблица:
ID - счетчик
FName - nvarchar
SName - nvarchar
TName - nvarchar
PassSer - int
PassNum - int
IDPrev - int

Для однозначной идентификации человека и недопущения дублей решено сделать составной уникальный индекс
по этим полям (кроме ID, IDPrev конечно). Все бы ничего, но на просторах нашей страны, встречаются люди у которых отчество отсутствует, как класс. При этом в поле отчества заносится NULL.
Как отнесется сервер к такой ситуации? Удастся ли вставить запись с другими ФИО, но с NULL в отчестве?
После беглого чтения BOL создается впечатление, что так сделать будет нельзя.
Ситуацию, что человек сменил паспорт(утерял, поменял и т.д.) решает оператор, устанавливая поле IDPrev на предыдущую запись с таким ФИО или оставляет NULL. Т.е. при смене паспорта изначально считаем человека новым в этой базе.

Сервер 2008 R2


что означает фраза "отчество отсутствует, как класс" ? какой класс у отчества?
если там пусто и вы не хотите использовать NULL пишите по умолчанию, например, N'x.e.z. kto papa'
...
Рейтинг: 0 / 0
29.09.2020, 19:19
    #40004121
НеофитSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
SQL2008
НеофитSQL
Местная полиция считает полное имя плюс дату достаточным идентификатором для своих целей.

Есть прецеденты, когда совпадало все и ФИО, и дата рождения!
Обычно это выявлялось в аэропорту с билетами на руках...
Бац!
А человек оказывается в розыске!
Отпуск насмарку, билеты пропали, подруга в слезах...


Надеюсь, это случилось не с вами. Если так, сочувствую.

Действительно, в большой стране есть ненулевой шанс двух человек родиться в один день и быть тезками, а если учесть смену фамилий при браках, шансы совпадения возрастают. Но практические неидеальные решения лучше воздушных замков, поэтому полиции надо где-то проводить черту. Поэтому ФИО и дата рождения, с надеждой что раса, пол или другие обстоятельства помогут избежать ошибочного ареста.

Я помню когда после 9/11 наспех защищались от террористов составлением списков, даже про возраст не подумали. В ресультате, сенатор (или конгрессмен, не помню) Тед Стивенс не мог сесть на самолет из-за скандального британского певца с таким именем.
...
Рейтинг: 0 / 0
01.10.2020, 12:20
    #40004504
Colt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
Alibek B.
ИНН не меняется при переезде, но в принципе он может изменяться в каких-то случаях.
В качестве идентификатора нужно использовать СНИЛС. Он не меняется, разве что в теории при смене пола (контрольный разряд зависит от пола).

А можно поподробнее про контрольный разряд и пол? Не нашел в сети про это.
...
Рейтинг: 0 / 0
01.10.2020, 13:29
    #40004536
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL
http://rostov-tfoms.ru/services/zasedaniya-rabochih-grupp/erp/pravila-rascheta-kontrolnoj-summy-snils
Про пол ничего не нахожу. Но ранее я работал со СНИЛС и слышал именно это, что смена пола это единственная причина, по которой СНИЛС может меняться.
Или правила поменялись (а о поле я слышал давно).
Или пол влияет на какую-то из других цифр.
Или я неправильно понял.
...
Рейтинг: 0 / 0
01.10.2020, 14:57
    #40004564
Colt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Составной уникальный индекс и NULL

Наверное, тут ноги растут отсюда :

Страховое свидетельство подлежит обмену в случае изменения фамилии, имени, отчества, пола, даты и места рождения. Также страховое свидетельство подлежит замене в случае обнаружения в нем ошибок либо в случае непригодности к использованию.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Составной уникальный индекс и NULL / 24 сообщений из 24, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]