mysql - 在 MySQL 中为购物系统创建关系数据库

标签 mysql database-design dynamic relational-database

我需要创建一个动态数据库结构来支持商店系统的不同商品。

任何类型的项目。

例如:衬衫 衬衫需要有尺寸(s、m、l)和类型(长袖、短袖)

衬衫的价格必须与类型和尺码相对应。

同样的数据库结构必须支持更基本的项目......比如三明治。三明治只需要有一个价格。

我不知道如何创建一个旨在支持复杂项目结构和更基本项目的数据库。

最佳答案

面对每个项目属性可能彼此无关,并且需要在将新项目添加到“商店”时动态添加的情况,我会将一般信息放在我的表格中,将项目特定的内容放在一个XML(具有针对该项目或可能的子类型定制的架构)。或者,您可以使用键值查找表来完成类似的操作。

对于某些已知的业务功能(价格计算),您可以在项目记录中以预先定义的格式存储公式,并让它引用需要用于计算的特定属性(来自 XML 或键值表)计算它们。对于针对自定义/事先未知属性的其他常见函数也是如此。

我做了类似的事情,允许对用户创建的调查的调查答案进行自定义处理,效果很好,但如果不是要求的话,它比您想要的要复杂和脆弱得多。

更新

示例(出于说明目的放在一起,不是推荐的实际方法):

ItemTable
-------------
  ItemName
  BasicDescription
  CostFormula
  XMLExtendedData

然后是衬衫商品的 XML 架构(不是特定的库存商品,而是定义该特定衬衫的范围的商品)

<Shirt>
   <Sizes/> ...
   <Types/>
   <BaseCost/>
   <SizeCost/>
   <TypeCost/>
</Shirt>

那么一行可以包含如下内容:

ItemTable
----------------------------------------------------------------------------
ItemName        | BasicDescription | CostFormula           
----------------------------------------------------------------------------
Edgy Cool Shirt | A cool shirt     | BaseCost*formula using XML property/node names

然后是一个 StockItems 表,它将 ItemTable 和一组 XML 属性与有关实际商品(即一件小号、短袖、绿色衬衫)的特定数据链接起来。

考虑到所有这些令人头疼的问题,我很高兴使用所有 PoS 系统,在元素上设置依赖的非常基本的商品属性,以及(最糟糕的是)类似元素的强力数据输入,很有趣诸如此类:

Lumber 2x4x4 spruce: $1
Lumber 2x4x8 spruce: $2
Lumber 2x4x10 spruce: $2.5
Lumber 2x4x12 spruce: $4
Lumber 2x4x16 spruce: $99
Lumber 2x4x4 pine: $1.5

关于mysql - 在 MySQL 中为购物系统创建关系数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18626635/

相关文章:

javascript - 如何更改调查中问题的顺序?

mysql SUM 聚合与 ORDER BY

mysql - 在 MySQL 的关系表中搜索 2 次出现

database-design - 使用redis获取我的 friend 事件(redis JOIN替代方案)

mysql - 我应该正常化还是不正常化?如果是的话怎么办?

javascript - Rails jquery 按动态值选择

php - 如何使用mysql中的查询计算总小时数?

mysql - 连接返回空值

performance - 设计大规模的关系系统

css - GWT - 更改 CSS 悬停属性