0

そこで、MySQL ワークベンチ 5.2 を使用してデータベースの EER ダイアグラムを作成しています。テーブル間に多対多の関係を作成すると (これらのテーブルには既に他のテーブルとの関係があります)、すべてのジャンクション テーブルが作成されます。あなたが参加している2つのテーブルの他の関係..私の質問は、これらの他のすべてのキーが必要ですか? 結合テーブルの主キーと、関連する 2 つのテーブルの ID だけを取得することはできませんか? それとも私は何かを見落としていますか?

ここに私のDBの一部があります:

-- -----------------------------------------------------
  Table `test`.`storys_has_comments`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `test`.`storys_has_comments` (
    `storys_id` INT NOT NULL ,
    `storys_user_id` INT NOT NULL ,
    `comments_id` INT NOT NULL ,
    PRIMARY KEY (`storys_id`, `storys_user_id`, `comments_id`) ,
    INDEX `fk_storys_has_comments_comments1` (`comments_id` ASC) ,
    INDEX `fk_storys_has_comments_storys1` (`storys_id` ASC, `storys_user_id` ASC) )
 ENGINE = MyISAM;

  -- -----------------------------------------------------
   Table `test`.`storys`
  -- -----------------------------------------------------
 CREATE  TABLE IF NOT EXISTS `test`.`storys` (
     `id` INT NOT NULL ,
     `user_id` INT NOT NULL ,
     `catagories_id` INT NOT NULL ,
     PRIMARY KEY (`id`, `user_id`, `catagories_id`) ,
     INDEX `fk_storys_user` (`user_id` ASC) ,
     INDEX `fk_storys_catagories1` (`catagories_id` ASC) )
  ENGINE = MyISAM;

-- -----------------------------------------------------
 Table `test`.`comments`
-- -----------------------------------------------------

CREATE  TABLE IF NOT EXISTS `test`.`comments` (
   `id` INT NOT NULL ,
   `body` TINYTEXT NULL ,
   PRIMARY KEY (`id`) )
ENGINE = MyISAM;

ストーリー テーブルでわかるように、2 つのテーブルにしかリンクしていませんが、複数のものへの外部キーがあります。

4

1 に答える 1

0

リンクしているテーブルのすべての主キーが必要です。

主キーを正しく選択しているかどうかはわかりません。一意のIDstory_idがあるのに、なぜ「user_id」と「catagories_id」を複合キーの一部として使用するのですか?

外部キーとプライマリキーを混同していませんか?

于 2012-03-02T08:14:08.993 に答える