mysql - 服务和服务包的数据库结构
问题描述
我正在构建一个简单的购物车,我们打算在其中销售个人服务以及组合服务包。这个想法是创建具有多种服务的服务包,并为客户购买服务提供一些折扣。
目前,我将服务和包存储在不同的表中 Service Tale 的数据库结构如下:
**Table: tbl_services**
Service_id - Auto Int P Key
Service_name varchar 150
Service_descr text
Service_price Double
服务包表
Pack_id - auto int, pKey
Pack_name varchar 255
Pack_descr text
Pack_price double
表:Service_pack_details(用于存储已添加到特定包中的单个服务)
Packdet_id- auto int
Pack_id - Fkey to header table
Serv_id F key to Service table
最初,这个想法是销售套餐,而不是个人服务。但现在,我们的想法是为客户提供灵活性,让他们购买个人服务或套餐或两者兼而有之。
如果我们允许这样做,或者希望购物车以这种方式运行,那么您认为这是一个好的数据库结构吗?
或者我是否应该将服务和包都存储在一个表中以便于查询和操作?比如, 服务表的新表结构:
*Table: tbl_service_packs
Service_id - Auto Int P Key
Service_name varchar 150
Service_descr text
Service_price Double
Service_type – Small Int (1- Service, 2- package)
Service_items varchar 255( to store comma separated Service_Ids for services that are part of this package)*
这样一来,所有的服务,包裹都将在一个表中,因此在处理购物车中的物品时会更容易查询吗?
请帮助我获得正确的数据库结构在此先感谢
PS:这是我的第一个问题,所以请询问我是否需要解释什么。
解决方案
推荐阅读
- php - 变量,需要解释 [1] 和 [2]
- python - 根据父节点重命名结果节点
- ios - 金属核函数缺少随时间变化的缓冲区绑定?
- datatables - 数据表在每一行添加按钮调用控制器功能
- sql - 为多个窗口功能重用同一个移动窗口
- c# - 如何使用实体框架查询具有动态列的表?
- javascript - ClientID 和 ClientSecret 如何在具有 OAuth2 身份验证的 NodeJS API 中工作?
- junit - 骆驼无法在模拟队列端点接收消息
- c++ - 使用 torch 编译的 C++ 程序,但无法在运行时加载 libtorch.so
- android - 单击 Activity 的其他 Fragments 时,有没有办法关闭 Window Popup。?