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

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

Сервер 2008 R2
...
Рейтинг: 0 / 0
Составной уникальный индекс и NULL
    #40003823
waszkiewicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
edward_sh,
странноватый мягко говоря, подход. ID гражданина нет в РФ?
...
Рейтинг: 0 / 0
Составной уникальный индекс и NULL
    #40003829
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Составной уникальный индекс и NULL
    #40003835
Guf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Составной уникальный индекс и NULL
    #40003875
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
edward_sh
Для однозначной идентификации человека и недопущения дублей

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


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


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

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


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

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


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

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

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

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

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

Что?


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


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


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


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

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

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

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

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

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

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

С одним и тем же номером и серией паспорта?
...
Рейтинг: 0 / 0
Составной уникальный индекс и NULL
    #40004069
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИНН не меняется при переезде, но в принципе он может изменяться в каких-то случаях.
В качестве идентификатора нужно использовать СНИЛС. Он не меняется, разве что в теории при смене пола (контрольный разряд зависит от пола).
...
Рейтинг: 0 / 0
Составной уникальный индекс и NULL
    #40004073
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Составной уникальный индекс и NULL
    #40004121
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL2008
НеофитSQL
Местная полиция считает полное имя плюс дату достаточным идентификатором для своих целей.

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


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

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

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

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

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

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


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