PHP

Построение связей в таблицах БД

Подскажите, верно ли сделана связь между БД из 4 таблиц
Связи - да, правильно. Но вот всё остальное...

Какой смысл в таблице parts? Если это таблица товаров, то называться она должна совсем иначе. И не должно быть поля partname в orderdetails.

varchar(45) для e-mail и password - глупость. e-mail может быть намного длиннее, а пароль в БД хранится в виде хэша, который гарантировано длиннее.

Почему price в parts double, а totalprice в orderdetails - float?
Почему number - int? В магазине не продают развесной товар?
Алексей Зюркалов
Алексей Зюркалов
67 248
Лучший ответ
да сойдет связь сама по себе верная но если б ты их назвал так как принято в нормальных базах то тогда бы мне не пришлось вывихивать мозг чтобы разобрать что где. ключи не указаны, индексы тоже. totalptice в таблице связей не нужен , вернее нужен но он должен быть вычисляемым полем из позиций в заказе т к заколебешься обновлять во время изменения самих позиций ), inventory вобще хз что это, partname должно быть в таблице parts
Number 1 Kazax
Number 1 Kazax
59 846
А как нам узнать, правильно ли сделана связь, если тут типы связи не указаны? Ну ок, предположим, user-orders one-to-many, orders-orderDetails one-to-one, а что со связью orderDetails - parts? один заказ может содержать много позиций или только одну? Если много, то в таблице parts нужен foreign key на order.order_id, при этом orderDetails не должен иметь поля связанные с parts. Не знаю, насколько есть смысл вообще разделять order и order_details, если эта инфа будет использоваться часто, таблицы будут джойниться, запросы выполняться медленнее. Есть смысл, если эта инфа используется прямо супер-редко, в этом случае разделение оправдано.
А вообще, беру свои слова назад, order-parts (если parts это товар) должна быть many-to-many, т.к. один товар может быть заказан в разных заказах и в заказе может быть много товаров.
Соответственно в parts еще стоит добавить количество товара, чтобы пользователь не мог заказать больше, чем есть в наличии.
Если хочется солидности, то можно еще накрутить возможность изменения цены товара, типа пользователь сделал заказ, но цена на товар изменилась, при этом пользователь должен получить товар по той цене, по которой он заказал, и цена его заказа не должна измениться. Но новый заказ уже должен быть по новой цене.
Иоанн Грозный
Иоанн Грозный
40 393
а зачем ты разделил таблицу заказов на две таблицы?
SP
Sergey Prishepa
167
Фаррух Толибов Думаю,для большей наглядности,объема, это для учебы
Фаррух Толибов Что по связям?
Фаррух Толибов Тут есть пользователь,заказ,товар
Фаррух Толибов как сделать по этой схеме ,нчего не меняя?
Фаррух Толибов это преддипломная работа