问题一:
有3个表直接客户,代理客户,销售
主键用红色下划线标记:
如何使用其他两个表为销售表设置外键。我希望为以下各项启用外键:
销售表 - 销售表中的销售类型(它应该是“直接客户”或“代理客户”的外键)。
可以向直接客户 (dc_id) 或通过代理客户 (ac_ID) 进行销售。例如,只有通过销售的代理,我可以在销售表中将代理 ID 分配为外键,因此在销售表中无需定义 Sales_Type。事情不仅仅是一个表互连到销售表。我可以在销售表中使用直接客户 ID (DC_ID) 一个外键和代理客户 (AC_ID) 另一个客户吗?当销售表(内部联接)时选择存在问题。
注意:如果我在销售表的销售类型中选择直接客户/代理客户。我不知道如何在销售表(销售类型)中分配外键。
问题2:
在销售表中分配外键后如何选择销售表(Direct customer wise, Agent wise, and all together)?你能在 SQLFiddle 中展示一个例子吗?
您需要在 Sales 表中添加列或在 Direct_Customer 和 Agent_Customer 之间创建连接表到 Sales,因为您不能在同一列上放置多个外键。连接表是保留传统关系模型的首选方法:
如果您无法创建新表,则可以改为执行以下操作:
但是,如果两个表中只有一个涉及特定的销售行,这将导致可能的 NULL 值,并且可能使查询更加困难。如果可以避免,我不会推荐这种方法。