Зачем использовать автоматически увеличивающийся первичный ключ, когда существуют другие уникальные поля?

Я изучаю курс под названием «системы баз данных», и для нашего проекта класса я должен разработать веб-сайт.

Вот пример созданной мной таблицы:

CREATE TABLE users
(
  uid INT NOT NULL AUTO_INCREMENT,
  username VARCHAR(60),
  passhash VARCHAR(255),
  email VARCHAR(60),
  rdate DATE,
  PRIMARY KEY(uid)
);

Профессор сказал мне, что «uid» (идентификатор пользователя) был совершенно бесполезным и ненужным, и я должен был использовать имя пользователя в качестве первичного ключа, поскольку нет двух пользователей может иметь то же имя пользователя.

Я сказал ему, что мне было удобно использовать идентификатор пользователя, потому что, когда я вызываю что-то вроде domain.com/viewuser?id=5, я просто проверяю параметр с помощью: is_numeric ($ _ GET ['id']) ... само собой разумеется, что он не был убежден.

Поскольку я видел user_id и другие подобные атрибуты (thread_id, comment_id среди других) во многих учебных пособиях и просматривая базу данных схемы популярного программного обеспечения (например, vbulletin) должно быть множество других (более сильных) причин.

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

47
задан meagar 12 November 2010 в 02:39
поделиться