客户表将保存特定于客户的信息。在我的示例数据中,我们看到Mary和Greg是客户。而不是在这里存储first_name,last_name等,我只是将一个外键存储到users
表中。我这样做是因为我们可能有一个既是客户又是员工(员工)的用户 - 为什么我们要让他们创建多个签名?很明显,你会想要在这个表中存储更多。
customers
id unsigned int(P)
user_id unsigned int(F users.id)
...
+----+---------+-----+
| id | user_id | ... |
+----+---------+-----+
| 1 | 2 | ... |
| 2 | 3 | ... |
| .. | ....... | ... |
+----+---------+-----+
相同的客户可以与许多不同的租户关联,并且每个租户可以有许多不同的客户,这台捆绑在一起。每列是它的各自表的外键,并且它们一起构成表的主键。在我的示例数据中,我们看到Mary
是Barbie's Hair Salon
以及Ken's Gym
和Greg
的客户是Ken's Gym
的客户。
customers_tenants
customer_id unsigned int(F customers.id)--\_(P)
tenant_id unsigned int(F tenants.id)----/
+-------------+-----------+
| customer_id | tenant_id |
+-------------+-----------+
| 1 | 1 |
| 2 | 2 |
| 1 | 2 |
| ........... | ......... |
+-------------+-----------+
你打电话给工作人员的是我打电话给员工的,这些是为租户工作的人。在我的示例数据中,我们看到Bob
和Mary
都适用于Barbie's Hair Salon
和Greg
,它们的工作范围是Ken's Gym
。
employees (staff)
id unsigned int(P)
user_id unsigned int(F users.id)
sin unsigned int // Social Insurance Number
dob date // Date of birth
hired date
...
+----+---------+-----------+------------+------------+-----+
| id | user_id | sin | dob | hired | ... |
+----+---------|-----------+------------+------------+-----+
| 1 | 1 | 123456789 | 1995-01-01 | 2013-12-13 | ... |
| 2 | 2 | 987654321 | 1996-01-01 | 2013-10-30 | ... |
| 3 | 3 | 123459876 | 1994-01-01 | 2013-01-24 | ... |
| .. | ....... | ......... | .......... | .......... | ... |
+----+---------|-----------+------------+------------+-----+
我们需要一张将员工和租户联系在一起的表格。该表格与customers_tenants
表格非常相似。在我的示例数据中,我们看到Bob
工作在Ken's Gym
和Mary
工作在Barbie's Hair Salon
和Ken's Gym
。
employees_tenants
employee_id unsigned int(F employees.id)
tenant_id unsigned int(F tenants.id)
+-------------+-----------+
| employee_id | tenant_id |
+-------------+-----------+
| 1 | 2 |
| 2 | 1 |
| 2 | 2 |
| ........... | ......... |
+-------------+-----------+
在tenants
表中我们存储有关每个租户的信息。显然,你将不仅仅是一个名字。
tenants
id unsigned int(P)(F users.id)
name varchar(50)
...
+----+---------------------+-----+
| id | name | ... |
+----+---------------------+-----+
| 1 | Barbie's Hair Salon | ... |
| 2 | Ken's Gym | ... |
| .. | ................... | ... |
+----+---------------------+-----+
最后我们有一个包含用户信息的表格。由于customers
和employees
是users
的子集,因此我们在此存储所有常用信息,例如first_name,last_name等。
users
id unsigned int(P)
username varchar(32)
password varbinary(255)
first_name varchar(30)
last_name varchar(30)
...
+----+----------+----------+------------+-----------+-----+
| id | username | password | first_name | last_name | ... |
+----+----------+----------+------------+-----------+-----+
| 1 | bob | ******** | Bob | Sled | ... |
| 2 | mary | ******** | Mary | Poppins | ... |
| 3 | greg | ******** | Greg | Stamps | ... |
| 4 | jen | ******** | Jennifer | Jones | ... |
| .. | ........ | ........ | .......... | ......... | ... |
+----+----------+----------+------------+-----------+-----+
客户或员工是否要登录? – cHao
@cHao员工不会登录,但客户是。但将来可能会增加员工登录。 – gaurav
您可能也会考虑到他们都属于同一类别,意味着需要额外的工作来*避免*员工登录... – cHao