管理多个企业客户的数据库设计

时间:2016-02-23 05:00:10

标签: mysql laravel database-design

我一直在讨论这个问题。这是我的情况。

我正在建立一个为企业提供调度服务的网站。这些企业为其客户提供服务。我希望这些企业能够管理自己的客户,因此他们应该可以随意创建客户。企业可能拥有相同的客户。我有一个带有client_id和business_id列的客户端表,可以将客户端与该业务相关联。这样每个企业都可以管理自己的客户端,我很喜欢这样的重复项。我想到的列是email,first_name,last_name,地址等等所有基本联系信息。但是,不能要求电子邮件,因为在这个行业中,客户可能没有电子邮件地址。企业应该能够预订客户服务。

我还希望客户能够通过我的网站预订服务。如果他们通过网站预订对我来说是最好的事实来源,那么我想抓住这些数据用这个为我建立一个客户表。如果他们通过我的网站预订,他们应该能够看到预订服务的历史记录。另一方面,如果一个企业通过后端应用程序预订他们的客户,并且在未来3个月客户决定通过我的前端网站预订,我想认识到并允许客户和业务看过去和现在的预订。

我尝试了什么

enter image description here

这允许企业随意创建客户并管理自己的客户。如果他们为客户提供电子邮件地址,我会在客户表中为我创建一个客户。然后,当客户决定注册该网站时,我在users表中创建用户并将其链接到客户,该客户可以链接到客户表中的多个客户记录,因为业务可能具有相同的客户。但这种方式至少我有一个独特的客户记录,客户可以管理自己的联系信息,这些信息将存储在客户表中,而企业可以管理自己的客户版本。

这似乎工作得很好,当我向客户收费时出现问题。我将使用stripe代表业务处理信用卡付款。我在哪里存储与客户/客户相关的条带数据?常识说要将它存储在客户表中,但是如果企业在预订服务时没有为客户创建电子邮件会怎么样?

我希望这对某人有意义。有没有人遇到过为多个企业管理客户的问题?这些客户也是您网站的客户。它就像一条记录(客户/客户)属于三个不同的实体(业务,网站和客户本身)。我是网站,我不需要管理客户/客户数据,无论他们给我什么,我会采取。但企业可能希望自己管理它。

只是在寻找其他人在这种情况下可能做些什么的想法。

1 个答案:

答案 0 :(得分:1)

客户应该能够逐个企业地提供信息。这包括你作为一个企业。您的业​​务(与他们一起)恰好让他们可以访问其他业务。

(请注意,您无法知道其他公司的客户是否与您的客户是同一个人,除非他们在登录您的某个商家时与您注册或在注册为注册时注册商家和你一起使用。同样支持你支持的任何两个企业。)