Правильная ссылка на эту страницу
http://az-design.ru/Support/DataBase/IB/INNtoDB.shtml

Как представить ИНН в Базе Данных

       ИНН – идентификационный номер налогоплательщика (индивидуальный номер налогоплательщика) имеет структуру определенную в Приказе Госналогслужбы РФ от 27 ноября 1998 года No.ГБ-3-12/309 (раздел 2) :
       Для организаций – NNNNXXXXXC
       Для физического лица – NNNNXXXXXXCC
       Где:
              NNNN – номер региона и налоговой инспекции, которая поставила на учет налогоплательщика
              XXXXX (XXXXXX) – собственно порядковый номер
              C (CC) – контрольное число (для физического лица 2 контрольных числа)


       Дополнительно указывается Код Причины Постановки на учет в виде – NNNNPPXXX
       где:
              NNNN – номер региона и налоговой инспекции
              PP – причина постановки на учет
              XXX – порядковый номер постановки на учет по соответствующей причине


       Таким образом в документах указывается одновременно ИНН/КПП например,


              7721198127/772101001

Соответственно имеются следующие варианты представления:

1 Вариант:

Create table Firms(
       . . . .    . . . .
       FrmINN     Char(12) character set win1251,
       FrmKPP     Char(10) character set win1251,
       . . . .    . . . .);


       Достоинства – простота представления и проверки, при изменении количества цифр (в нашей стране все бывает) достаточно увеличить ширину поля.
       Недостатки – большой объем в БД (26 байт на запись), сравнение текстовых данных много медленнее числовых. Для ИНН практически не бывает случаев поиска с пропавшими числами – 772119*127 – как при опознании автомобильных номеров, когда свидетель видел только некоторые цифры.

2 Вариант:

Create table Firms(
       . . . .    . . . .
       FrmINN     Decimal(15,0),
       FrmKPP     Decimal(15,0),
       . . . .    . . . .);


       Достоинства – простота представления и проверки, при изменении количества цифр (в нашей стране все бывает) ничего не надо делать, вряд ли ИНН будет больше 15 цифр. Проверка на цифры выполняется уже на уровне клиента – в поле нельзя ввести ничего кроме цифр. Простота проверки на количество цифр на уровне клиента – в поле нельзя ввести число более 9999999999. Кроме того, несмотря на то, что в документах ИНН указывается одновременно с КПП, поиск, как правило, производится только по ИНН. Таким образом в этом варианте поиск будет самым быстрым.
       Недостатки – средний объем в БД (16 байт на запись), для привычного представления необходимо дополнительные усилия, хотя и небольшие.

3 Вариант:

Create table Firms(
       . . . .    . . . .
       FrmINN     Decimal(15,5),
       . . . .    . . . .);

Предварительные замечания
       1) Номер региона и налоговой инспекции в ИНН и КПП всегда совпадает
       2) Контрольную цифру ИНН всегда можно вычислить, следовательно, если ее проверять при вводе, то в дальнейшем можно не хранить и вычислять при выборке.


       Таким образом ИНН и КПП можно представить в виде 772119812.01001


       Достоинства – компактность – объем всего 8 байт. Проверка может выполняться и на уровне клиента и на уровне сервера – в триггерах Insert и Update.
       Недостатки – При увеличении количества разрядов возникают ограничения – общее количество цифр равно 15. Если наши доблестные органы захотят увеличить размер ИНН – придется находить новое решение. Для существующих видов ИНН количества разрядов достаточно.
       В документации по Interbase v.6 указано что тип Decimal дает точность 18 цифр (как следует из представления в виде Int64), но реально остались ограничения Decimal(15,x). Поэтому попытка получить точность 18 цифр не увенчалась успехом.

Резюме:
       Основные проблемы – объем БД и быстрота поиска. Эти проблемы могут не учитываться если количество фирм в БД порядка нескольких тысяч, но если это количество увеличивается до нескольких миллионов, то эти проблемы выступают на первый план.
       Итак, 1 вариант – простота, 2 вариант – удобство, 3 вариант – компактность. Выбор зависит от конкретной ситуации.

© 2003, Архангельский А.Г.

 

Оглавление
Главная страница




Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:44 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/DataBase/IB/INNtoDB.shtml