[英]SQL Server primary / foreign keys
我正在開發中,我有一個表,一個系統Employees
與有關員工多列。 我有一個JobTitle
列和Department
另一列。
在我當前的設計中, JobTitle
和Department
列是Employees
表中的復合外鍵,它們與Groups
表鏈接,該表具有2列復合主鍵( JobTitle
和Department
)以及作業描述的額外列。
我不開心這個設計,因為我認為,聯用2化合物2個表varchar
列不好的表現,我認為這將是更好的有一個Integer
列(自動編號) JobTitleID
用作主鍵Groups
table和作為Employees
表中的外鍵而不是文本JobTitle
和Department
列。
但我不得不這樣做,因為當我將員工列表(Excel)導入我的Employees
表時,它可以直接映射(JobTitle - > JobTitle&Department - > Department)。 否則,如果我使用整數索引作為主鍵,那么我將手動將Excel工作表中的文本JobTitle
列重命名為基於Groups
表中生成的鍵的數字,以便導入。
保持我的數據庫設計是這樣的(與文本復合外鍵鏈接的文本復合主鍵)可以嗎? 如果沒有,那么如果我使用Groups
表中的整數列作為主鍵並且與Employees
表中的外鍵相同,那么如何將員工列表從excel直接導入Employees
表?
是否可以將Excel中的列表導入到SQL Server,以便excel工作表中的文本JobTitle
將自動轉換為Groups
表中的corespondent JobTitleID
? 這將是最好的解決方案,然后我可以在Groups
表中添加JobTitleID
列作為主鍵和Employees
表中的外鍵。
謝謝,
聽起來你正試圖讓數據庫表設計適合excel文件的導入,這不是一個好主意。 忘記excel文件並首先使用正確的主鍵和關系設計db表。 這意味着主鍵的int,bigint或guids。 這將使您遠離麻煩,除非您完全知道密鑰是唯一的,例如在SSN中。 導入時,將部門和職務標題填充到各自的表中,創建主鍵。 現在填充它們,將這些鍵添加到可以導入到employees表的excel文件中。
這只是我如何解決這個問題的一個例子。 使用多列作為鍵是沒有錯的,但如果你堅持使用int,bigint或guids作為主鍵,它肯定會讓你擺脫傷害。
看看這篇文章中的答案: 如何使用 - 批量插入......
我將創建一個簡單的存儲過程,將您的Excel數據導入臨時無限制的STAGING表,然后通過執行相應的表連接將INSERT插入到您的真實表中以獲取正確的外鍵並將無法導入的行轉儲到IMPORT中失敗表。 只是一些想法......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.