Я разрабатываю систему, в которой у меня есть таблица Employees
с несколькими столбцами, связанными с сотрудниками. У меня есть столбец для JobTitle
и еще один столбец для Department
.Первичные/внешние ключи SQL Server
В моей нынешней конструкции, JobTitle
& в Department
столбцы являются составными внешние ключи в Employees
таблице, и они связаны с Groups
таблицу, которая имеет 2 колонки составного первичного ключа (JobTitle
& Department
) и дополнительный столбец для работы описание.
Я не рад этой конструкции, потому что я думаю, что соединение 2 таблицы, используя 2 соединение varchar
столбцов не хорошо для работы, и я думаю, что было бы лучше иметь Integer
колонок (Autonumber) JobTitleID
используется в качестве основных в таблице Groups
и в качестве внешнего ключа в таблице Employees
вместо текстового JobTitle
& Department
.
Но я должен был это сделать, потому что, когда я импортирую список сотрудников (Excel) в таблицу Employees
, ее можно просто непосредственно сопоставить (JobTitle -> JobTitle & Department -> Department). В противном случае, если я использую целочисленный индекс в качестве первичного ключа, мне пришлось бы вручную переименовать текстовый столбец JobTitle
в листе excel на число, основанное на сгенерированных ключах из таблицы Groups
, чтобы импортировать.
Является ли это хорошим, чтобы мой дизайн базы данных был таким (текстовый составной ключ, связанный с текстовым составным внешним ключом)? Если нет, то если я использовал целочисленный столбец в таблице Groups
в качестве первичного ключа и тот же, что и внешний ключ в таблице Employees
, то как я могу импортировать список сотрудников из excel непосредственно в таблицу Employees
?
Можно ли импортировать список из Excel в SQL Server таким образом, что текстуальное JobTitle
из листа первенствовать будет автоматически переведен на корреспондентские JobTitleID
из Groups
таблицы? Это было бы лучшим решением, я могу добавить столбец JobTitleID
в таблицу Groups
в качестве первичного ключа и в качестве внешнего ключа в таблице Employees
.
Спасибо,
Большое спасибо за разъяснение. Я буду использовать int для первичных ключей, но затем я буду следовать предложению Адольфо Переса, чтобы импортировать данные, это быстрее и просто, чем редактировать excel вручную. –