销售佣金的数据库架构

时间:2015-10-17 02:46:32

标签: sql

我正在尝试创建一个包含表标题的数据库,其中包含不同的标题,代码(名称的简称代码)以及其他标题上的该标题的佣金。 我有一个名为Title

的表
Id           Name             Code        CommissionOnA   CommissionOnEng
1            Admin             A            0                15
2            Engineer          Eng          1                0

现在拥有这样的表模式是好的,因为标题将会更改,并且可以动态插入,更新或删除。因此,根据我目前的方法,我必须更改表并添加另一列,以便为新标题添加佣金。

有没有更好的方法来做到这一点,考虑到这也支持多级销售heirarchy。任何数据库的模式都可以,但对于MySql是首选。

Scenerio是用户创建新标题的表单,使用文本框动态呈现表格中存在的所有标题,这样当用户创建新标题时,他应该能够添加与其他标题相对应的佣金新标题的标题。

例如,如果用户创建一个代码为“c”的新标题名称“Consultant”,他应该看到Admin,Engineer的文本框,这样当用户保存它时,会创建一个包含以下数据的表中的一行

Id     Name        Code        CommissionOnA   CommissionOnEng  CommissionOnC
1      Admin        A            0                15             0
2      Engineer     Eng          1                0              0
3      Consultant   C            12               5              0

现在我有另一个名为Employees的表

Id  Name  Title  ManagerId
1   Rob   1       Null
2   Kate  2       1
3   Eli   3       2
4   Al    2       3

现在当Ido递归时,每次初级销售时,都应根据标题表中指定的佣金将佣金转移给他的经理以及经理的经理。

所以,当Al卖东西时,Eli应该获得5佣金,Eli的头衔是顾问,而Eli是Al的老板,所以拥有职称顾问(3)的员工获得5佣金,如果员工拥有职称工程师( 2)卖东西。

1 个答案:

答案 0 :(得分:1)

规范化表格模式更好,这样您就不需要添加新列,而是将这些相关列放入自己的表中,然后通过外键加入这些记录。

例如,创建一个名为commissions的新表,然后为其唯一ID,与titles表和佣金金额相关的ID提供一列:

commissions
----------------------------
id (INT, NOT NULL, Primary Key)
titles_id (INT, NOT NULL)
amount (INT, NOT NULL, DEFAULT=0)

,数据看起来像:

id titles_id amount
1  1         15
2  2         1