1

データベースの基本バージョンは次のとおりです。

質問uid-主キー-intqid- 主キー -ID-bigintimg-ncharpostdate-日時 タイトル -nchar





UserProfileE
メール-ncharUserId-
主キー-idendity-int

投票
qid-主キー-bigintuid-
主キー
-int投票日-日時
投票-ビット

私が抱えている問題は、投票のuidをUserTableの外部キーにし、投票のqidを質問の外部キーにしたいということです(明らかにqid)。WebMatrixとの関係を追加しようとすると、「参照されるテーブルには主キーまたは候補キーが必要です」というエラーが表示され続けます。私は何が間違っているのですか?

4

4 に答える 4

1

外部キーは、別のテーブルからの一意のキーを参照する必要があります。あなたの質問から、item1またはitem2をPKにするつもりなのか、それとも(item1、item2)の組み合わせが一意なのかは明確ではありません。それが組み合わせである場合、それは別のテーブルからの外部キーの唯一の有効なリンクです。

質問のPKは2つの列で構成されているため、投票から質問へのFKを作成するには、それに結合するために2つの列が必要です。ただし、1つの列だけで単純なPKを作成することをお勧めします。その後、FKが機能します。

投票
qid-主キー-bigint
uid-主キー-int
投票日-日時
投票-ビット

質問
qid-主キー-ID-bigint
uid-int
img-nchar
postdate-日時
タイトル-nchar

質問(uid、qid)にインデックスを作成できますが、PKにはしないでください。

于 2011-01-24T21:43:40.327 に答える
0

WebMatrixに精通していないため、特に複合キーに問題があるかどうかはわかりません。

ただし、質問の主キーは(uid、qid)であり、投票のqid(それ自体)を質問の外部キーにすることとは互換性がないことに注意してください。

于 2011-01-24T22:01:19.607 に答える
0

ここに画像の説明を入力してください

create table UserProfile (
      UserID  integer identity primary key
    , Email   nvarchar(512)
);

create table Question (
      QuestionID integer identity primary key
    , OwnerID    integer 
    , PostDate   datetime
    , Title      nvarchar(1000)
);
alter table Question
    add constraint fk1_Question foreign key (OwnerID) references UserProfile (UserID); 


create table Vote (
      UserID      integer
    , QuestionID  integer
    , VoteDate    datetime
);
alter table Vote
    add constraint pk1_Vote primary key (UserID, QuestionID)
  , add constraint fk1_Vote foreign key (UserID)      references UserProfile (UserID);
  , add constraint fk2_Vote foreign key (QuestionID)  references Question (QuestionID);
于 2011-01-24T22:21:46.083 に答える
0

私は同じ問題を抱えていて、誤って解決策を見つけました。

主キーインデックステーブルのフィールドの順序がリレーションと同じであることを確認する必要があります。

于 2012-06-02T17:55:27.627 に答える