2016-10-08 4 views
2
  Table one 
       ID | product_code | product name | company_id 
       1 | 12345  | beer cake |343434defee 
       2 | 12346  | vodka cake |343434deereee 

      Table two 
        Product_code |Quantity | price | weight 
        12345  | 34  |345 |0.5 
        12345  | 343 |600 |1.0 
        12345  | 4  |845 |1.5 
        12346  | 341 |345 |0.5 


     CREATE TABLE `one`(
     ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
     product_code VARCHAR(32) NOT NULL , 
     name VARCHAR(30) NOT NULL , 
     company_id VARCHAR(30) NOT NULL) 

     CREATE TABLE two(
     product_code VARCHAR(32) , 
     weight VARCHAR(20) NOT NULL , 
     price INT(4) NOT NULL , 
     Quantity INT(4) NOT NULL , 
     FOREIGN KEY (product_code) REFERENCES one(product_code)) 

これは私のテーブルの外観です。ケーキの種類は商品のランディングページに表示する必要があります.2つのテーブルの関係はproduct_codeという列で示されます。foriegnテーブルに主キーが必要ですか?

外部テーブルにプライマリキーが必要ですか?

これらのために適切なスキーマを作成してください。

+2

これは必須ではありませんが、テーブルをクエリするときに便利です。どのようにしてテーブルtwoのレコードを一意に識別しますか?私はおそらく、 'Identity'の代わりに' two 'に 'composite primary key'を作成します。 –

+0

テーブル' two'はトランザクションテーブルのようです。個々の取引をどのように追跡して引き出すのですか? – drum

+0

また、SQLの味を指定してください。 – Alexei

答えて

1

データ構造が正しく設定されていません。これはあなたの最初のテーブルです:

ID | product_code | product name | company_id 
1 | 12345  | beer cake |343434defee 
2 | 12346  | vodka cake |343434deereee 

これで結構です。 IDは - おそらく - 各行の一意のIDです。主キーとして宣言する必要があります。 product_codeuniqueと宣言する必要があります。

第2のテーブルには、ではなく、product_codeが含まれている必要があります。 Product_codeは、最初のテーブルの各行の属性です。行を参照するにはidが必要です。

+0

製品コードは一意であり、同じ製品コードを持つことができる2つのアイテムはありません。でも、それをidに変更する必要がありますか? –

+0

@BOTJr。 。 。 。あなたはそれをプライマリキーとして使うことができますが、私は合成プライマリキーに賛成です。外部キーの関係は、参照テーブルの主キーを参照する必要があります。 –

+0

私はプロダクトコードを使用して、プロダクトに関する質問をしています.2番目のテーブルを参照していれば、どちらのアイテムも同じではないので、 'product_code'と' weight'を実行できます。 2番目のテーブルの製品コードの代わりにIDを使用するには、まず最初のテーブルを呼び出し、その製品コードに対応するIDを取得してから2番目のテーブルを参照する必要があります。 –

1

FKが一意制約を持つ列を指している場合は、詳細はhereをチェックしてください。

これを行う前に、あなたのデザインを明確にする必要があります

1)あなたのテーブルのために意味のある名前を提供します。例えば。表1からProduct、表2からProductTransaction

2)表ProductTransactionの主キーを作成します。ProductTransactionId列はProductTransactionProductテーブル間の外部キーを作成)最も使用シナリオ

3微細であるべきです。あなたがproduct_code列を使用することができ、が、私はあなたの定義を正規化することをお勧めします:

A)ProductTransaction Bからproduct_codeを削除します)。この方法をProductIdを追加し、Product.ID

を指す外部キーを定義し、あなたが保存されます少ないデータ(文字列ではなく整数)とテーブル間の結合が高速になります。

+0

OPはここに何かに密接に関連している場合、更新を完了しました。 – Drew

関連する問題