0

私のデータをカテゴリ別に分けられた在庫リストと考えてください。私が始めたとき、1 つのテーブルを 2 つのテーブルに分割する必要がありました。それ以外の場合、oldTable では、特定の行の列は無関係でした。データベースに 2 つの新しいテーブルを作成しました。1 つはカテゴリ用、もう 1 つはデータ/アイテム用です。現在、oldTable の既存のデータを使用して newTable の data/items テーブルを埋めようとしているので、SQL を学習でき、手動で行う必要はありません。他の方法がわからなかったので、手動で入力したカテゴリ テーブル。

古いテーブルには次のものがあります。

tableName (
  id, 
  categoryA, 
  categoryB, 
  categoryC, 
  categoryD, 
  categoryE, 
  categoryF,  
  isPriorityA, 
  isPriorityB, 
  isPriorityC, 
  isPriorityD, 
  isPriorityE, 
  isPriorityE
)

新しいテーブルには次のものがあります。

Categories (
 cat_id, 
  name
)

dataItem (
  item_id, 
  cat_id, 
  name, 
  priority, 
  description, 
  URL
)

新しい dataItem テーブルに、テーブル列cat_idの値のいずれかと一致するように強制するにはどうすればよいですか? Categories.cat_id値が範囲外に追加された場合にエラーを発生させるためでしょうか? これは、テーブルをマッピングまたはリンクして、関係テーブルにすることである可能性があると思います。tableName データを dataItem テーブルに一度に 1 列ずつアルファベット順にコピーして、名前と優先順位を付け、item_id値を自動インクリメントできるようにするにはどうすればよいですか?

4

1 に答える 1

0

外部キーを使用して dataItem.cat_id を Categories.cat_Id の値に制限したいようです。このようなもの:

ALTER TABLE dataItem ADD FOREIGN KEY (cat_id) REFERENCES Categories(cat_id);

正確な構文は、使用しているデータベースによって異なります。外部キーの詳細については、http ://www.w3schools.com/sql/sql_foreignkey.asp を参照してください。

于 2012-07-14T21:23:59.517 に答える