Я беру курс под названием "системы баз данных", и для нашего проекта класса мне нужно создать веб-сайт.
Вот пример таблицы, которую я создал:
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), должно быть много других (более сильных) причин.
Итак, мой вопрос: как бы вы оправдали необходимость не null auto incrementing id в качестве первичного ключа vs с использованием другого атрибута, такого как имя пользователя?