Структура таблицы заработной платы - SQL

У меня есть процесс начисления заработной платы, реализованный в SQL Server 2012. Таблица с 365 столбцами для хранения сведений о каждом дне для различных разделов PayHead.

PayHead включает в себя (Basic,HR,Deduction,ESIC,Tax,PF и т. Д.)

Это хорошая идея сделать все эти 365 столбцов в один столбец Дата, а затем необходимо обработать запрос?

Нужны разные предложения по приведенному выше сценарию, чтобы выровнять таблицу так, чтобы я мог выполнить некоторые операции по ее улучшению (индексирование, разбиение и т. Д.).

1 ответ

Нет, создавать 365 столбцов не очень хорошая идея. Вам необходимо нормализовать ваши данные. Эта статья показывает, что вы хотите сделать и как это сделать. Так что создайте одну таблицу со столбцами

  • колонка ID иметь ключ
  • колонка Date где вы будете хранить день
  • колонка PayHead

И вы можете создать следующий некластеризованный индекс, чтобы найти по столбцу Date:

CREATE NONCLUSTERED INDEX [IX_Payroll_Date_PayHead]
ON dbo.Payroll
(Date)
INCLUDE (PayHead)
GO

И у вас будет таблица с примерно 365 строками, которую хорошо найти Date столбец с некластеризованным индексом IX_Payroll_Date_PayHead,

Этот запрос будет иметь план запроса с index seek:

SELECT
  Date
, PayHead
FROM Payroll
WHERE DATE = '2018-29-11'
Другие вопросы по тегам