最初我被導入從Excel文檔從食物來源的食品1並且它有VARCHAR型初級* (PK示例#FOOD0001)*(因爲只有1源在我剛剛直接導入到食物表自動遞增INT ID的時間)數據庫設計:從多個數據源的主鍵
但我需要從其他來源食物源2具有完全的主鍵類型的進口食品(INT)(PK例子#25928747)
我目前有:
食品表
INT
FoodId<PK>
,名稱
份量表
IN牛逼
ServingId<PK>
,FoodId<FK>
,名稱,大小
什麼是最好的數據庫設計,使任何食物來源可能是進口的,不會影響目前的IDS或者至少有一個映射,使食物可以很容易地更新,刪除等?我不想將ID更改爲VARCHAR出於性能原因
我的一個想法是在我的食物表中引入FoodSourceFoodId,該食物表具有來自食物來源的原始ID,那樣如果食物被改變/從食物來源更新,那麼它可以很容易地在食物表中更新?
食品表
INT FoodId<PK>, *VARCHAR FoodSourceFoodId*, Name
1 #FOOD0001 Food 1
2 #FOOD0002 Food 2
3 25928747 Food 1
4 25928748 Food 2
同樣地,我可以做同樣的事情的份量表,其中服務ID可能涉及到的服務ID源數據
你認爲這是去哪裏?或者你會建議別的嗎?
是否有一個令人信服的理由來保持源系統中沒有意義的主鍵? 「名稱」不是「你」的重要,獨特的屬性嗎? –
我需要無意義的主鍵的原因是,有時食物從食物來源更新,所以我不知道如何將食物1與主鍵1映射到#FOOOD001等等,這是更多的維護理由沿着軌道 – DotnetShadow