一个 table 为另一个 table 提供 ID:好还是坏?

one table providing ids for the other tables: good or bad?

假设有三个table。

table 1
generic_ids
generic_id

table 2
公司
company_id
company_name
company_account_no
等等

table 3
员工
employee_id
first_name
last_name
middle_name
位置
等等

一名员工和一家公司有自己的地址(有时有多个地址),所以我将它们放在一个单独的 table 中,称为 地址 。为了避免有两个 table,比如 company_addressesemployee_addresses,我认为我的 generic_ids table 可以为 companies table 和 employees 生成 ID table。然后我可以加入 companies table 与 addresses table or employees table 与 地址 table 并始终区分加入有地址的公司和有地址的员工。

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

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

两种可能 easier/more 有效的方法来做你想做的事。

1) 使两个 tables 中的 id 自动递增,但是其中一个 tables 的递增开始如此之高,第一个 table 永远不会达到它.

2) 当您加入 table 时,您还可以通过执行以下操作来区分具有相同 ID 的他们:

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

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