У меня есть две таблицы, определенные ниже.
Create table tickets (id long not null,
reseller long not null,
constraint pk_lock primary key (id));
Create table ticketRegistrations (id long not null,
customer long not null,
constraint fkTicketRegistrationTicket
foreign key (id) references tickets (id) on update cascade);
Клиент может вводить тикеты (следовательно, нет автоинкремента для первичного ключа). Поскольку id является первичным ключом и внешним ключом таблицы регистрации заявок, существуют ограничения целостности и все такое прочее. Проблема, с которой я столкнулся, - это запрос функции, который должен допускать заполнение нулями идентификатора билета (то есть 00070). Насколько мне известно, целые числа нельзя хранить с нулевым заполнением.
Какое решение я придумал, это добавить столбец ticketID varchar (8), не равный NULL, в таблицу заявок и использовать фактический идентификатор для ОБОИХ СТОЛОВ в качестве суррогатного ключа. Тогда внешний ключ таблицы регистрации билетов будет указывать на тикетид.
У меня вопрос к эффективности и скорости. Ранее я мог добавить регистрацию заявок в системе, и база данных накладывала бы ограничение целостности на добавление, чтобы увидеть, находится ли билет с тем же идентификатором в базе данных. Теперь у меня есть строка varchar для идентификатора, который будет проиндексирован.
Когда клиент "регистрирует билет", будет ли проще сохранить тикетид varchar в таблице тикетов и использовать внешний ключ тикетида в таблице регистрации тикетов (также varchar (8))?
Или будет проще НЕ иметь ticketid varchar (8) в регистрации заявок, оставить внешний ключ к таблице заявок в качестве первичного ключа таблицы регистрации заявок и сначала проверить наличие тикетида в таблице заявок, получить значение, и ввести его в строку внутри регистрации заявок?
Это создаст индексированный поиск varchar в таблице заявок перед каждой вставкой в таблицу заявок на регистрацию.
Мое первоначальное решение не нуждалось в этом, поскольку справочная целостность позаботилась о проблеме.
Меня беспокоит время поиска.