我正在设计一个客户可以从供应商处订购产品的市场。我需要帮助来定义数据库方案。
我有两种类型的公司:客户和供应商。供应商可以有自己的客户(一个客户可以属于多个供应商)。客户和供应商都可以拥有自己的员工:可以登录应用程序并根据其用户角色访问表的经理和助理,并且只能访问他们所属公司的记录。
注册到应用程序时,用户必须在注册表中选择用户类型(客户或供应商),然后注册后,他/她自动获得角色“经理”。之后,作为经理,他们可以添加公司信息和员工。只有经理可以将公司信息和员工添加到系统中。
客户和供应商可以有不同的公司属性,这就是我将它们分成两个表的原因。
我为这种情况创建了以下架构,但不确定这是正确的方法。什么是更好的解决方案?
这种情况会产生另一个问题:当经理注册时,他们被添加到 Employee 表中,但此时他们不属于任何公司,因为他们还没有添加公司信息,因此没有 customer_id 或 supplier_id员工表。只有当他们添加公司信息时,他们才会获得新公司的客户或供应商 ID(公司 ID)。但是,为了将他们与公司相关联,需要将此公司 id 添加回员工表中的经理记录中。我认为这不是应该的方式,但无法提出更好的解决方案。我正在尝试使用客户和供应商表中的“employee_id”来解决此问题。这样,当经理添加公司信息时,他们的“employee_id” 将与公司信息一起保存在客户或供应商表中。这样,经理将与公司一对一地关联。也就是说,经理只能访问一家公司,即他拥有的公司。稍后,当经理将员工添加到公司时,会变得更容易,因为公司已经存在,因此供应商或客户 ID 将与员工记录一起保存。
如何以正确的方式做到这一点?
表格:
雇员:
- ID
- customer_id NULL(客户的 FK)
- 供应商 ID NULL(供应商的 FK)
- 名称
- 名字
- 电子邮件
- 密码
- user_type(客户或供应商)
- 角色(经理或助理)
顾客:
- ID
- employee_id(员工的外键)
- 公司名称
- 联系人姓名
供应商:
- ID
- employee_id(员工的外键)
- 公司名称
- 联系人姓名
谢谢