Правильно ли я нарисовал схему базы данных интернет магазина?
Первое что бросается в глаза:Категории
1. Категории у Вас только 1-го уровня, вложенных категорий не будет?
2. Что такое "Тип продукта" в таблице "Категория" ? и на что он влияет?Товары
1. Остатки товаров нигде не хранятся. Маловероятно что магазин торгует товаром который никогда не заканчивается...
2. Хранить количество просмотров товара (которое постоянно должно обновляться) в таблице товаров - это очень плохая практикаКорзина
1. Что храниться в корзине? состав уже оформленного заказа? Тогда тут нужно учитывать количество заказаного товара и его стоимость во время заказа (она ведь со временем меняется) Состав формирующегося заказа? Тогда нужно учитывать как минимум количество добавленного товара. И то и другое?
2. По сути дела в корзине у Вас сейчас храниться перечень товаров добавленных пользователем, тогда зачем в каждой строке хранить "IP клиента"? Насколько я понимаю IP Вы используете для привязки корзины к клиенту - в этом случае не нужно его храниться в каждой позиции корзины, лучше ввести отдельную таблицу для этих целей, да и привязка корзины по IP - плохой вариантЗаказ
1. Сумма заказа нигде не хранится, Вы ее что-ли планируете "на лету" рассчитывать?
2. Не понятно какое назначения у таблицы "Журнал заказов"
3. В заказе Вы храните данные о клиенте, но что будет если один и тот же клиент оформит несколько заказов? Вы получите дублирование данных, поэтому стоит информацию о клиентах вынести в отдельную таблицу
P.S. Корректность структуры базы данных сложно оценить по одной схеме. В этом вопросе нужно исходить из задач, которые планируется решать
Корзину привяжите к сэссии а у вас к ip, сам позиции заказа храните в отдельной таблице - это избавит вас от проблем с переименованием товаров и категорий...  В целом пойдет ваша схема но это ясли магазин))) без обид