最初に、 Food Source 1の Excel ドキュメントから食品をインポートしていましたが、VARCHAR タイプが primary* (PK example #FOOD0001)* でし た (その時点でソースが 1 つしかなかったため、自動インクリメント int ID を使用して食品テーブルに直接インポートしたためです) )
しかし、完全に主キータイプ (INT) を持つ 別のソースFood Source 2から食品をインポートする必要があります(PK の例 #25928747)。
私は現在持っています:
食品表
INT
FoodId<PK>
、名前
サービングテーブル
INT
ServingId<PK>
,FoodId<FK>
, 名前, サイズ
現在のIDに影響を与えない、または少なくとも食品を簡単に更新、削除できるようにマッピングを持っている食品ソースをインポートできるようにするための最良のデータベース設計は何ですか? パフォーマンス上の理由から ID を VARCHAR に変更したくない
私が持っている 1 つのアイデアは、食品ソースからの元の ID を持つ FoodSourceFoodId を食品テーブルに導入することです。そのようにして、食品が食品ソースから変更/更新された場合、食品テーブルで簡単に更新できますか?
食品表
INT FoodId<PK>, *VARCHAR FoodSourceFoodId*, Name
1 #FOOD0001 Food 1
2 #FOOD0002 Food 2
3 25928747 Food 1
4 25928748 Food 2
同様に、サービング ID がソース データのサービング ID に関連している可能性のあるサービング テーブルに対しても同じことを行うことができます。
これが進むべき道だと思いますか?それとも何か他のものを提案しますか?