Назначение идентификатора базы данных Android - PullRequest
0 голосов
/ 07 марта 2011

это может быть простой вопрос, но при создании базы данных вы можете вместо этого назначить, какой идентификатор будет иметь автоматическое увеличение?

что я хочу сделать, это создать базу данных с людьми, где я могусделайте запрос по номеру телефона, чтобы получить больше информации об этом человеке в других столбцах.

это можно сделать или я могу сделать то же самое, создавая базу данных с автоматически увеличивающимся идентификатором?

Ответы [ 2 ]

1 голос
/ 07 марта 2011

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.

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

1 голос
/ 07 марта 2011

Я бы предложил иметь таблицу пользователей с их телефонными номерами и использовать столбец _id из этой таблицы в качестве ключа для связи с другими таблицами.Это сделает ваше обслуживание намного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...