我正在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引擎时遇到问题,来自this post我理解MyISAM和InnoDB之间的区别。在我的项目中会有更多的读取而不是写入,因为商店的商品将被视为超过添加,所以我需要MyISAM,但在上面的脚本中我使用了InnoDB,因为它支持外键。我应该选择什么?
答案 0 :(得分:1)
您要问的问题是优化和性能。如果你足够幸运,你的股票和用户群变得非常大,那么你可以担心调整事情,这样你就有很多表现。您也可以利用MySQL数据库引擎技术的未来发展。你拥有的东西可以为成千上万的用户和数以万计的待售物品工作。
现在,不要浪费时间担心这些事情。使用您拥有的,完成项目的开发,并在公众面前完成。
答案 1 :(得分:0)
如果您使用MyISAM,您的应用程序必须自己维护引用完整性,因此我将决定应用程序框架的设计。