gpt4 book ai didi

php - 购物车表 - 反馈数据库设计

转载 作者:搜寻专家 更新时间:2023-10-30 20:06:18 24 4
gpt4 key购买 nike

我正在开发在线购物系统。

产品结构是这样工作的:

有很多类别..

每个类别都有一些项目。

每个项目都有一个或多个选项

一个选项可以有额外的或没有额外的

我有以下表格:

mysql> desc categories;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| cat_id | int(11) | NO | PRI | NULL | auto_increment |
| company_id | int(11) | NO | | NULL | |
| name | varchar(100) | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+

例如:12、2、“谷歌”

项目表:

mysql> desc items;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| item_id | int(11) | NO | PRI | NULL | auto_increment |
| cat_id | int(11) | NO | | NULL | |
| name | varchar(150) | NO | | NULL | |
| description | varchar(150) | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+

例如:2, 12, "Item 1", "Desc... 1"

例如:3、12、“项目 2”、“描述... 2”

选项表

mysql> desc items_options;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| option_id | int(11) | NO | PRI | NULL | auto_increment |
| item_id | int(11) | NO | | NULL | |
| name | varchar(150) | NO | | NULL | |
| price | decimal(6,2) | NO | | NULL | |
+-----------+--------------+------+-----+---------+----------------+

例如:45、2、“常规”、“2.20”

例如:46、3、“小”、“1.20”

例如:47、3、“大”、“2.20”

附加表:

mysql> desc items_options_extras;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| extra_id | int(11) | NO | PRI | NULL | auto_increment |
| option_id | int(11) | NO | | NULL | |
| name | varchar(150) | NO | | NULL | |
| price | decimal(6,2) | NO | | NULL | |
+-----------+--------------+------+-----+---------+----------------+

例如:64、47、“带包”、0.10"

这是好的数据库设计吗?哪些地方可以改进?

我没有创建关系表,有这个必要吗?如果是这样,我不确定如何创建关系表。

目前我使用多个 SELECT 查询来获取这些表之间的关系,如下所示:

<?php
$q = mysql_query("SELECT item_id, name FROM items where cat_id = '3'");
while($row = mysql_fetch_assoc($q)) {
echo $row['name'];
$q2 = mysql_query("SELECT price FROM items_options_extras where item_id =" . $row['item_id']);
while($row2 = mysql_fetch_assoc($q2))
echo $row2['price'];
}
}
?>

当我想删除一个项目并包含选项时,我使用与上面类似的 php 代码。

编辑:忘记添加选项表

编辑:更新了一些数据示例。

最佳答案

考虑一个项目可能属于多个类别。

enter image description here

以下是需要考虑的事项:

  • 如果商品的价格随类别而变化,则 ItemPrice 列将进入 CategoryItems 表。如果没有,它将进入项目表。
  • 如果选项的价格随着项目的变化而变化,则 OptionPrice 列将进入 ItemOptions 表。如果不是,它将进入选项表。

关于php - 购物车表 - 反馈数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5783646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com