2012-12-01 18 views
0

我設計在MySQL的網上商店數據庫,下面是我的代碼:該款發動機選擇在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,因爲它支持外鍵。我應該選擇什麼?

+1

我個人認爲你應該堅持使用InnoDB,除非你有一個非常大的數據集和特定的需求,經過基準測試後,證明MyISAM性能更高,並且你可以在沒有完整性限制的情況下完成。 – siride

回答

1

你問的問題是關於優化和性能。如果你足夠幸運,你的股票和用戶基礎變得非常大,那麼你可以擔心調整的事情,所以你有很多的表現。您也可以利用MySQL數據庫引擎技術的未來發展。對於數十萬用戶和數以萬計的待售商品,您擁有的商品都可以正常工作。

現在,不要浪費時間去擔心這種事情。使用你擁有的東西,完成你的項目的開發,並在公衆面前進行。

0

如果您使用MyISAM,您的應用程序必須自行維護參照完整性,所以我會根據應用程序框架的設計做出決定。