动态(变量)数据库表名与存储在列中的变量
Posted
技术标签:
【中文标题】动态(变量)数据库表名与存储在列中的变量【英文标题】:Dynamic (variable) database table name versus variable stored in column 【发布时间】:2012-08-17 22:09:58 【问题描述】:创建员工管理系统。
CREATE TABLE IF NOT EXISTS `tbl_employees` (
`employee_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`start_date` DATE NOT NULL,
`end_date` DATE NOT NULL,
PRIMARY KEY (`employee_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
一名员工可以为 10 家公司工作。有数以百万计的员工。基于编码标准,安全性和速度,哪个更好。
为每个公司创建一个单独的表,然后动态引用该表。例子。 tbl_companya_employees、tbl_companyb_employees、tbl_companyc_employees 或
将 company_name 列添加到 tbl_employees 表中
为什么?谢谢。
【问题讨论】:
【参考方案1】:添加一个名为 company 的新表。
company
company_id int primary_key autoincrement whatever,
name varchar,
... other details ...
然后将 company_id 列添加到员工表中。
更好的是,如果你想保留的不仅仅是员工的 CURRENT 公司,创建一个employee_company_history 表:
employee_company_history
employee_id
company_id
start_date
end_date
【讨论】:
【参考方案2】:最好在员工表中有一个公司列,这将允许您编写适用于任何公司的通用联接。如果您有单独的表,则必须编写代码来为相应的公司生成动态查询。
【讨论】:
以上是关于动态(变量)数据库表名与存储在列中的变量的主要内容,如果未能解决你的问题,请参考以下文章