gpt4 book ai didi

php - 需要有关数据库设计和表结构的建议

转载 作者:行者123 更新时间:2023-11-29 13:50:29 24 4
gpt4 key购买 nike

总的来说,我对编程和数据库很陌生。到目前为止,我已经阅读了 DUmmies 第 4 版的 PHP.MYSQL,并且正在尝试创建一个自己的数据库来存储商店的菜单/库存。我目前正在使用 XAMPP/MYSQL。

我的数据库示例表如下:

SHOPINFO

Shopname Outlet Category Subcategory Item
PizzaHut Main Drinks Carbonated Cola
PizzaHut Main Drinks Non-carbonated Orange Juice
BurgerKing Central London Burgers Beef Whopper
BurgerKing South London Burgers Beef Whopper Jr.
BurgerKing South London Drinks Carbonated Cola

我目前想知道是否应该将上表分成:

SHOPINFO
Shopname Outlet Category Subcategory Item
PizzaHut Main 1 1 1
PizzaHut Main 1 2 3
BurgerKing Central London 1 5 4
BurgerKing South London 1 5 7
BurgerKing South London 3 3 2

其中类别、子类别和项目都分为不同的表,分别由类别 ID、子类别 ID 和项目 ID 标识。

我对这一决定的 2 个主要问题是:

1.拆分表格真的有好处吗?我问这个是因为查询第一个表而不是第二个表不是更容易吗?例如我可以简单地做类似的事情

$query="SELECT * FROM SHOPINFO WHERE Shopname='BurgerKing' AND 
Outlet='South London' AND Category='Drinks' AND
Subcategory='Carbonated'";
$result=mysqli_query($cxn,$query) or die("Error");
while($row=mysqli_fetch_assoc)
{
extract($row);
echo "$Item";
}

而不是如果表被拆分就必须执行的查询(我不知道该怎么做,这让我很伤心)。

2.如果我要拆分表,我猜我必须为每个商店的类别、子类别和商品创建单独的表,使用商店名称和导出作为主键,然后我将使用外键链接到 SHOPINFO 表,可能使用 ON DELETE CASCADE 和 ON UPDATE CASCADE。主要问题是,除了使查询变得更加复杂之外,这样做到底会带来什么好处?

PS:我担心的是 future 的可扩展性。(例如,将来向网点添加国家、城市、州)

建议、帮助、意见、侮辱和煽动表示赞赏。

谢谢!

最佳答案

我认为你的整个结构都是错误的。您需要将所有内容分成单独的表,从公司表开始 - 必胜客和汉堡王是您显示的唯一条目。然后,您需要一个分支机构表,其中包含公司的外键以及每个分支机构的原子数据,例如分支机构编号、地址等。然后您需要一个类别表,其数据似乎是饮料或汉堡,然后是通过包含该类别的外键的子类别表(碳酸、非碳酸、牛肉、鸡肉等)。您需要一个产品表(可乐、橙汁、whopper、whopper jnr),该表具有子类别的外键。最后,将有一个分支产品连接表,其中有两个字段(分支编号、产品编号)。

这种结构虽然看起来很麻烦,但却是最灵活的,并且允许人们轻松地编写各种查询 - 按公司列出的总销售额、按分支机构列出的总销售额等。当您定义数据库时,这可能不清楚但将来当您被要求进行一些您没有预见到的数据聚合时,您会感激这一点。

将所有内容都保存在一张表中是一个非常糟糕的主意:假设汉堡王被 The Grill Master(一个发明的名称)接管:这样您只需更改一条记录即可反射(reflect)更改,而当使用一条记录时巨大的表,你将不得不更新许多记录。

“一张巨大的表”方法来自使用 Excel 作为数据库管理器的人,基本上没有任何更复杂的经验。专业的答案是使用关系数据库,将所有内容拆分为表。

如果以上内容显得居高临下,我深表歉意;我是一名博士生,正在研究 Excel 在使用关系数据库的公司中的使用,因此我的观点有些偏见。

关于php - 需要有关数据库设计和表结构的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16749410/

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