Динамическое (переменное) имя таблицы базы данных по сравнению с переменной, хранящейся в столбце

Создание системы управления персоналом.

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 компаний, в которых может работать сотрудник. Есть миллионы сотрудников. На основе стандартов кодирования, безопасности и скорости, что лучше.

  1. отдельная таблица для каждой компании, на которую затем ссылаются динамически. Пример. tbl_company_employees, tbl_companyb_employees, tbl_companyc_employees ИЛИ

  2. добавить столбец company_name в таблицу tbl_employees

И почему? Спасибо.


person csi    schedule 17.08.2012    source источник


Ответы (2)


Добавьте новую таблицу под названием company.

company 
    company_id int primary_key autoincrement whatever,
    name varchar,
    ... other details ...

а затем добавьте столбец company_id в таблицу сотрудников.

Лучше, если вы хотите сохранить больше, чем ТЕКУЩАЯ компания сотрудника, создайте таблицу employee_company_history:

employee_company_history
    employee_id
    company_id 
    start_date
    end_date
person Marvo    schedule 17.08.2012

Лучше иметь столбец компании в таблице сотрудников, это позволит вам писать соединения общего назначения, которые работают с любой компанией. Если у вас есть отдельные таблицы, вам придется написать код, который генерирует динамический запрос для соответствующей компании.

person Barmar    schedule 17.08.2012