发现可能重复:数据库设计,同一张表有多种类型的客户
大家好。
我实际上正在寻找一种创建具有两种客户的数据库的好方法:个人和公司。这是一个网站,我正在使用CodeIgniter框架(不确定它是否重要)。
我只会写“重要”字段以确保更容易理解我正在尝试做的事情。
- 两种客户都有这些必需的数据:电子邮件(这是登录名)、密码
- 对于公司:siret(SIRET 编号),名称
- 对于个人:first_name,last_name
所以,我想知道是否最好将所有内容都放在一个表中(根据客户类型使用 NULL 字段),还是在带有“主”表(帐户)的 2 个表(公司、个人)之间拆分更好。
我对一张桌子的想法
+----------------+--------------------+
| account | |
+----------------+--------------------+
| id (PK) | |
| email (UNIQUE) | |
| password | |
| siret (UNIQUE) | NULL if individual |
| company_name | NULL if individual |
| first_name | NULL if company |
| last_name | NULL if company |
| is_company | necessary ? |
+----------------+--------------------+
如果first_name和last_name为 null,则它是一个individual。
如果siret和company_name为空,它是一个公司。
或者直接使用is_company字段?
我对多个表的想法
+----------------+--------------------+--------------------+
| account | company | individual |
+----------------+--------------------+--------------------+
| id (PK) | account_id (PK/FK) | account_id (PK/FK) |
| email (UNIQUE) | name | first_name |
| password | siret (UNIQUE) | last_name |
| is_company ? | | |
+----------------+--------------------+--------------------+
在这里,当创建一个新帐户时,它将填充 2 个表:帐户以及关于客户类型的公司或个人。
我想在这种情况下我们需要运行 2 个查询来获取特定客户的每个数据。
我不知道什么是最好的方法,也不知道是否有一种“经常使用的标准”。但我可以肯定的是,如果能得到您的意见,我将不胜感激。