0

私は MySQL でオンライン ショップ データベースを設計しています。以下は私のコードです。

CREATE  TABLE IF NOT EXISTS `eshop`.`sellers` (
  `seller_id` INT(11) NOT NULL ,
  `seller_name` VARCHAR(45) NOT NULL ,
  `password` VARCHAR(45) NOT NULL ,
  `contacts` VARCHAR(45) NOT NULL ,
  PRIMARY KEY (`seller_id`) ,
  UNIQUE INDEX `seller_id_UNIQUE` (`seller_id` ASC) ,
  UNIQUE INDEX `seller_name_UNIQUE` (`seller_name` ASC) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8

CREATE  TABLE IF NOT EXISTS `eshop`.`goods` (
  `good_id` INT NOT NULL ,
  `name` VARCHAR(45) NOT NULL ,
  `description` TEXT NULL ,
  `price` INT NULL ,
  `photo` VARCHAR(45) NOT NULL ,
  `owner_name` VARCHAR(45) NULL ,
  `new` TINYINT(1) NOT NULL ,
  `approvement_status` TINYINT NOT NULL ,
  `contacts` VARCHAR(150) NOT NULL ,
  `date` DATE NOT NULL ,
  `seller_id_fk` INT NOT NULL ,
  PRIMARY KEY (`good_id`) ,
  UNIQUE INDEX `good_id_UNIQUE` (`good_id` ASC) ,
  INDEX `seller_id_fk` (`seller_id_fk` ASC) ,
  CONSTRAINT `seller_id_fk`
    FOREIGN KEY (`seller_id_fk` )
    REFERENCES `eshop`.`sellers` (`seller_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8

MySQL エンジンの選択に問題があります。この投稿から、MyISAM と InnoDB の違いを理解しました。私のプロジェクトでは、ショップの商品が追加されるよりも表示されるため、書き込みよりも読み取りの方が多くなるため、MyISAM が必要ですが、上記のスクリプトでは、Foreign Key をサポートする InnoDB を使用しています。何を選べばいいですか?

4

2 に答える 2

1

あなたが尋ねている質問は、最適化とパフォーマンスについてです。運が良ければ、在庫とユーザーベースが非常に大きくなるので、パフォーマンスを大幅に向上させるために、調整について心配することができます。また、MySQLデータベースエンジンテクノロジの将来の進歩を利用できる可能性があります。あなたが持っているものは、何十万ものユーザーと何万もの売り物に対してうまく機能します。

今のところ、そのようなことを心配して時間を無駄にしないでください。あなたが持っているものを使用し、プロジェクトの開発を完了し、一般に公開する前にそれを公開します。

于 2012-12-01T17:17:39.023 に答える
0

MyISAMを使用する場合、アプリケーションはそれ自体で参照整合性を維持する必要があるため、アプリケーションのフレームワークの設計に基づいて決定します。

于 2012-12-01T17:21:16.723 に答える