一张表为其他表提供ID:好还是坏?

时间:2015-03-18 13:42:19

标签: mysql database foreign-keys primary-key

假设有三个表。

表1 的 generic_ids
generic_id

表2 公司
COMPANY_ID
COMPANY_NAME
company_account_no

表3 的员工
EMPLOYEE_ID
FIRST_NAME
姓氏
middle_name
位置
等。

员工和公司有自己的地址(有时是多个地址),所以我将它们放在一个名为地址的单独表中。为了避免使用两个表,例如 company_addresses employee_addresses ,我认为我的 generic_ids 表可以为公司生成ID表和员工表。然后我可以将公司表与地址表或员工表一起加入地址表,并始终区分加入有地址的公司和有地址的员工。

还有许多其他属性,例如地址。

这样做是不是一个坏主意?一些建议,改进,更好的方法?

1 个答案:

答案 0 :(得分:0)

两种方法可以更轻松/更高效地完成您想要的任务。

1)使两个表中的id自动递增,但随着其中一个表的增量从高开始,第一个表将永远不会到达它。

2)当您加入表格时,您也可以通过执行以下操作来区分具有相同ID的人:

select concat("c",company_id) from companies
select concat("e",company_id) from employees

然后没有冲突。在我看来,仅为分类添加外键是一个坏主意。