Android использует sqlite базы данных; они поставляются со «скрытым» столбцом идентификатора, который автоинкрементен и который связан с любым столбцом INTEGER, который вы определили как ПЕРВИЧНЫЙ КЛЮЧ.
Таким образом, вы не можете избавиться от дополнительного автоинкрементного столбца (он используется внутри sqlite). Но ничто не мешает вам просто определить свой собственный столбец PRIMARY KEY, который НЕ имеет тип INTEGER. Если вы сделаете это, скрытый столбец _id останется скрытым.
Итак, вы можете сделать:
CREATE TABLE people (
phone_number VARCHAR(12) PRIMARY KEY,
firstname VARCHAR(32),
lastname VARCHAR(32),
...
);
и используйте phone_number в качестве первичного ключа в этой таблице, не беспокоясь о скрытом столбце _id.
Однако я также предлагаю (как это делает Фаррей) использовать целочисленный идентификатор. Телефонный номер - очень плохой первичный ключ, так как телефонные номера людей могут измениться, и это означает, что вам придется обновлять множество таблиц, когда это произойдет. Кроме того, если вы не храните международные телефонные номера, ваши телефонные номера могут быть не уникальными и, следовательно, не будут первичными ключами.