Добавить таблицу со складами, а текущую таблицу склад переименовать в ТОварСклад. Кстати, если это не сделать, то бд не будет находиться в 3 нормальной форме. Как я и говорил выше много товаров на одном складе и товар на разных складах
Если нет возможности использовать куки, а следовательно сессии, то можно просто подменять все запросы после авторизации, добавляя туда ID пользователя, например /articles/show подменить на /articles/show/user123/password123 или на /articles/show?user=123&password=123, но в этом случае нужно будет каждый раз проверять авторизацию.
Возможно сделать следующим образом: выдать пользователю токе на основе логина, пароля и, допустим, таймстампа времени авторизации, тогда ссылка будет ввида /articles/show?token=<?= md5($password . $login . $time) ?>, и писать этот токен бд, со временем последнего запроса от пользователя. Если пользователь не заходил, долгое время то токен не действительный, если зашел то просто обновляем время в таблице.
Тут нет ошибки, так как константа относится к классу, а не к его экземпляру (объекту). То есть self::CONSTANT - это обращение к константе, которая относиться к классу, но $this->CONSTANT - это уже не правильно, так как обращение идет к объекту, тоже самое с $this::CONSTAN. Это не ошибка интерпретатора, с PHP все ок. Это уже синтаксическая ошибка.
Ее не нужно разрабатывать с нуля, ее нужно переделать от текущей ER диаграммы, убрав ключи, и возможно этого хватит что бы препод отстал и халява пришла)
Она в 3 нф. И она даталогическая, так как есть ключи. Подробнее об отличиях инфологической и даталогической модели можно прочесть на википедии, по ссылке. Если в крации то можно разбить по степени абстрации: инфологическая > даталогическая > физическая. На небольших схемах даталогическая и инфологическая совпадут, не считая ключей.
Инфологическая модель в вашем случае это ER диаграмма, которой является представленный выше рисунок. Теперь необходимо ее просто доработать под разные склады и определиться со стандартами написания (ГОСТ, ISO и т д)