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,但在上面的脚本中,我使用了 InnoDB,因为它支持外键。我应该选择什么?

4

2 回答 2

1

您要问的问题是关于优化和性能的。如果你足够幸运,你的股票和用户群变得非常大,那么你可以担心调整一些东西,这样你就有了很多性能。您还可以利用 MySQL 数据库引擎技术的未来进步。您所拥有的将适用于数十万用户和数万件待售物品。

现在,不要浪费时间担心这些事情。使用你所拥有的,完成你的项目的开发,并在公众面前发布它。

于 2012-12-01T17:17:39.023 回答
0

如果您使用 MyISAM,您的应用程序必须自己维护引用完整性,因此我将根据应用程序框架的设计做出决定。

于 2012-12-01T17:21:16.723 回答