Я беру курс под названием «системы баз данных», и для нашего проекта класса мне нужно создать веб-сайт.Зачем использовать первичный ключ с автоматическим приращением, когда существуют другие уникальные поля?
Вот пример таблицы, я создал:
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), должно быть много других (более сильных) причин ,
Итак, мой вопрос: как бы вы оправдали необходимость непустого автоматического инкрементного id в качестве первичного ключа или другого атрибута, такого как имя пользователя?
Joe Celko всегда исторгал то же самое: «Вы должны использовать значащие ПК, когда это возможно». – Brettski
Ваш профессор слишком много читает книгу комиксов, чем читает PHP/MySQL? – klox
Ваш профессор звучит как пурист. Реально, да - если имена пользователей будут уникальными, идентификаторы пользователей являются повторяющимися данными сортировки, так как имя пользователя и идентификатор пользователя имеют одинаковое значение. Но в реальном мире они полезны для большинства, если не всех причин, упомянутых ниже. – cHao