Если вы продемонстрировали своему профессору, что присвоение уникального произвольного целого числа каждому пользователю имеет значение для вашего приложения, то, конечно, он будет ошибочно утверждать, что оно «совершенно бесполезно и ненужно».
Однако, возможно, вы упустили его точку зрения.Если он сказал вам, что требование состоит в том, что «никакие два пользователя не могут иметь одно и то же имя пользователя», то вы не выполнили это требование.
Искреннее спасибо за публикацию вашего SQL DDL, это очень полезно, но большинство нене беспокойтесь о SO.
Используя вашу таблицу, я могу сделать следующее:
INSERT INTO users (username) VALUES (NULL);
INSERT INTO users (username) VALUES (NULL);
INSERT INTO users (username) VALUES (NULL);
INSERT INTO users (username) VALUES (NULL);
INSERT INTO users (username) VALUES (NULL);
Что приводит к следующему:
SELECT uid, username, passhash, email, rdate
FROM users;
uid username passhash email rdate
1 <NULL> <NULL> <NULL> <NULL>
2 <NULL> <NULL> <NULL> <NULL>
3 <NULL> <NULL> <NULL> <NULL>
4 <NULL> <NULL> <NULL> <NULL>
Я думаю, что это точка зрения вашего профессорапытался сделать: без применения естественного ключа на username
у вас действительно нет никакой целостности данных вообще.
Если бы я был профессором, я бы также призвал вас убрать обнуляемые столбцы из вашего дизайна.