如何在外键中处理多个服务来创建数据库结构?

时间:2017-09-17 16:25:45

标签: sql sql-server foreign-keys relational-database

我建立了一个网站,它有很多服务可供购买,我的问题是找到为这个结构制作ERD的最佳方法!

正如我在图像中所示,我有一个例程系统为用户签订合同,换句话说,我有一个简单的表格,用于插入合同及其与用户和成员的关系信息。

我将合约表的所有关系存储在 Junction 表中。但我的问题是,我有很多服务,其价格不同,根据自己的情况计算( FirstServicePrice SecoundServicePrice ThirthServicePrice 和...... )。

我决定使用JunctionForFindPrice名称的联结来保持合同的每个服务主要。 4例如,如果某人购买了第一个服务,我只在FirstServicePriceId字段的JunctionForFindPrice表中保留FirstServicePrice ID,并将其他字段保留为null,然后将JunctionForFindPrice的Id存储在Junction Table(图中的灰色表)中。

这是实施此方法的最佳方式吗?它是当前的方式吗?

figure

1 个答案:

答案 0 :(得分:1)

存在与应用程序一样多的定价模式,因为每个人都有不同的做法,所以不要担心:我们都对如何做到这一点感到困惑"对&#34 ;办法。一种常见的方法是创建一个像[Orders]这样的表,其中包含[ClientID],[DateOrdered]和[OrderedBy]等字段,以及另一个表[OrderLineItems],其中包含它们添加到订单和价格中的每个[ServiceID]该服务存储为一个数字(23.99美元)。您将拥有一个函数或存储过程来确定该服务的客户价格,而不是价格联结表,因为它已添加到OrderLineItems表中。

在我的主要应用程序中,我们有一个标准价格表"对于每个具有开始/停止日期的服务:允许我们在将来设置价格上涨。然后我们有一个可能的折扣表,允许三种类型的折扣,设置新价格,折扣x%或折扣x $。 "折扣"在我们想要向客户收取更多费用的地方可能是负面这使得定价结构非常灵活,但是解决这个问题的代码非常复杂和脆弱。 enter image description here