2017-03-18 3 views
0

クライアントからExcelシートを受け取りました。 それは私が理解できない3つの行を持っています。テストテーブルの行4(ライン6) "RelationTo" 欄のtestCategoryList.CategoryIdで外部キーと主キーと同じフィールドを持たない2つのテーブル間の関係を作成する方法

enter image description here

。 テストテーブルの外部キーtestCategoryがtestCategoryListテーブルのプライマリキーであることを意味しますか?

しかし、テストテーブルの外部キーtestCategoryは、testCategoryListテーブルの主キーではありません。 他の2行(7行目と8行目)は同じ構造です。

testCategoryListテーブル:

enter image description here

testSubjectListテーブル:

enter image description here

testLevelListテーブル:

enter image description here 私は何かが足りないのですか? これらの3行は意味をなさない。

+0

は、3つの参照テーブルの構造をどのよう_are_? 'testCategoryList'、' testSubjectList'と 'testLeveList'ですか?それらをあなたの質問に追加できますか? –

+0

@Joel Brown確かに。私は、testCategoryListテーブルを追加します。 – user1166240

+0

@ジョエルブラウン:私は3つのテーブルを追加しました。 – user1166240

答えて

3

あなたの混乱は命名規則を超えている可能性があります。

外部キー列名と一致させるには、外部キー列名を主キー列名と同じにする必要があるとしますか? これは絶対に真実ではありません。一部のストレージテクノロジにこの要件があったが、SQL標準の一部ではありません。

しかし、外部キー名がプライマリキー名と正確に一致する多くの人に普及している命名規則があります。これにより、ナチュラルジョインと呼ばれるものが可能になります。

ただし、誰もがこの命名規則を適用することをお勧めしません。 (a)あるテーブルから別のテーブルへ2つのFKがある場合、重複する列名を避けるために規約を廃止しなければならず、(b)テーブル名をperson.nameやcompany.nameなどの意図しない自然な結合を避けるために、すべての単一列の前に配置します。

スプレッドシートが明確に示していることは、testテーブルのFKが他の3つのテーブルのPKを指していることです。例えばtestテーブルのCREATE TABLEスクリプトが含まれます:

... 
CONSTRAINT FK_TEST__TESTCATEGORYLIST FOREIGN KEY 
    IX_TEST__TESTCATEGORY (testCategory) 
    REFERENCES testCategoryList (categoryId) 
... 
+0

ありがとうございました。とった。 – user1166240

+0

ありがとうございます。私はupvoted、しかしチェックマークをクリックしなかった。それをして正しい答えとして受け入れる。ありがとう@philipxy – user1166240

関連する問題