Обычно я бы рекомендовал UUID/GUID (как NWCoder does in his link), но UUID - это 16 байт необработанных данных, поэтому он не может быть выражен в 15 байтах данных, что намного меньше в 15 буквенно-цифровых символах.
Итак, вопрос становится, как «уникально»?
Уникально для таблицы было бы просто, просто используйте значение incrementing и unsigned int или hex.
Уникальным для мира было бы более сложным. Вы можете приблизиться, создав UUID, а затем передав его с MD5, а затем возьмите столько битов, сколько сможете, и преобразуйте его в базу (10 + 26 + 26 для чувствительности к регистру или 10 + 26 для нечувствительности к регистру) и первые 15 символов.
Уникально для пользователя, но (как вы описали позже), уникального в присутствии не-интернет-подключения, было бы проще всего просто создать случайную строку из 15 буквенно-цифровых символов. Это, вероятно, будет функционально эквивалентно методу UUID/MD5 выше - по существу вероятность коллизии будет очень малой, и, учитывая, что пользователь будет иметь только несколько поездок, по существу нет шансов на коллизацию (предполагая, что вы семя генератор случайных чисел).