簡體   English   中英

SQL Server主鍵/外鍵

[英]SQL Server primary / foreign keys

我正在開發中,我有一個表,一個系統Employees與有關員工多列。 我有一個JobTitle列和Department另一列。

在我當前的設計中, JobTitleDepartment列是Employees表中的復合外鍵,它們與Groups表鏈接,該表具有2列復合主鍵( JobTitleDepartment )以及作業描述的額外列。

我不開心這個設計,因為我認為,聯用2化合物2個表varchar列不好的表現,我認為這將是更好的有一個Integer列(自動編號) JobTitleID用作主鍵Groups table和作為Employees表中的外鍵而不是文本JobTitleDepartment列。

但我不得不這樣做,因為當我將員工列表(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM