在第3列中插入数据时如何保留两列的唯一组合?

时间:2012-06-24 07:28:16

标签: php mysql unique

我在mysql表中有三列:tax_id,company_name,store_name。我需要tax_id和company_name是唯一的组合,tax_id或company_name不能与另一个company_name或tax_id分开存在。另一件事是我需要在公司拥有的不同(所有)商店中加入第三列名称。表的示例应为:

tax_id| company_name| store_name
1324  | Kmart       | 1st ave
1324  | Kmart       | broadway
1324  | Kmart       | 5th ave
7725  | DM          | shop 1
7725  | DM          | shop 2
7725  | DM          | shop 7
etc...

禁止在不同公司使用tax_id,或禁止使用不同tax_id的company_name。 欢迎任何帮助,也欢迎任何代码示例。

2 个答案:

答案 0 :(得分:1)

我会使用2个表:

  • 公司
  • 存储

公司包含tax_id和company_name。 商店包含tax_id作为外键和store_name。

然后,您可以使tax_id和company_name唯一,并使tax_id为主

答案 1 :(得分:1)

由于您的tax_idcompany_name具有一对一的映射关系,因此建议您规范化数据库。您应该将tax_id to company_name mapping移至其他表格,并在当前表格中保留company_nametax_id。您可以使用JOIN来挤出所需的任何信息。

如果您无法更改数据库结构,则必须查询数据库以查找company_name是否具有tax_id,然后使用插入查询的后续信息。

有关详细信息,请查看database normalization