【发布时间】:2015-09-23 23:34:31
【问题描述】:
让我先说我知道我在标题中使用了“产品”这个词,尽管这是关于“服务”的,我觉得这个概念和我正在尝试实施的方法与产品选项的方法相同与我在标题中使用“服务选项”相比,每个人都可以更容易地联系起来。
我正在为我的新汽车维修公司网站建立一个数据库。我正在努力为我提供的各种服务存储选项。例如:
一位客户上网要求更换前制动卡钳。在这种情况下,服务是“更换制动卡钳”,服务选项是“前”。我将这些存储在一个表中:
Services
| ID | Service Name |
----------------------------------
| 1 | Brake Caliper Replacement |
| 2 | Oil Change |
我有第二个表,它存储每个服务的所有潜在选项,并指示该选项是必需的还是可选的。我在报价过程中使用网站上的这些字段来确保他们选择所需的选项之一。
服务选项
| ID | Service_Id | Service Option | Required | Optional |
----------------------------------------------------------
| 1 | 1 | Front | 1 | 0 |
| 2 | 1 | Rear | 1 | 0 |
| 3 | 1 | Pad Replacement| 0 | 1 |
现在,当他们填写报价的其余部分并使用他们想要的选项选择服务时,我正在为如何存储关系而苦苦挣扎。
这是我目前的设置方式:
Quote
| ID | Customer Id | Vehicle Id |
---------------------------------
| 1 | 1 | 2 |
Quote Service
| Quote Id | Service Id | Service Option Id |
---------------------------------------------
| 1 | 1 | 1 |
| 1 | 1 | 3 |
| 1 | 2 | null |
但并非所有服务都具有必需或可选选项。但我正在尝试确定存储所有这些数据以生成报价的最佳方式。任何人都可以就这种设计是否有意义或以不同的方式看待我可能没有想到的事物提供一些帮助?
【问题讨论】:
-
不要保存空的最后一行。事实上,他们只想做好前面。重新调整显示的第一个表格
-
您可以为所有需要的服务提供服务选项(例如 BASE)。
-
也许这样的服务是“掀盖”
-
我想最灵活的设计是一个自连接的服务产品表,有些是必需的,有些不是,这取决于每个人如何挂在其父项下。该表将有一个 int id
parentId -
我添加了最后一行以显示我如何处理未选择任何选项的服务。
标签: mysql sql database database-design