2011-06-14 203 views
1

我正在Amazon EC2實例上重新創建此數據庫(我原本是由django modelw製作的)。我使用MySQL工作臺將數據庫轉換爲模型,然後將其轉發到.sql文件中的所有CREATE語句。然而,一些外鍵的東西很奇怪地命名,我不確定我可以取出或重命名哪些部分以及哪些部分是必需的。以下是我正在談論的代碼示例。MySQL命名約定

CREATE TABLE IF NOT EXISTS `gamelydb`.`quotes` (
`id` INT(11) NOT NULL AUTO_INCREMENT , 
`game_id` INT(11) NOT NULL , 
`quotetext` VARCHAR(400) NOT NULL , 
`speaker_id` INT(11) NOT NULL , 
PRIMARY KEY (`id`) , 
INDEX `quotes_7b333d1e` (`game_id` ASC) , 
INDEX `quotes_7171bad0` (`speaker_id` ASC) , 
CONSTRAINT `game_id_refs_id_274910a8` 
     FOREIGN KEY (`game_id`) 
     REFERENCES `gamelydb`.`game` (`id`), 
CONSTRAINT `speaker_id_refs_id` 
     FOREIGN KEY (`speaker_id`) 
     REFERENCES `gamelydb`.`person` (`id`)) 
ENGINE = InnoDB DEFAULT CHARACTER SET = latin1; 

所以等,其中有「INDEX‘quotes_randomstuff’」或「speaker_id_refs_id」,我需要所有的隨機的東西或者我應該將其重命名爲清晰的/實用性的緣故?

+0

MySQL對每個密鑰都要求一個唯一的名稱。如果你不提供一個,它會爲你生成一個,因此在關鍵名稱中是'垃圾'。如果你願意,你可以改變這些,但除非你經常操縱按鍵,否則這是值得的時間/精力? – 2011-06-14 14:36:54

+0

好聽起來不錯。我不認爲內部的game_id會永遠改變,所以這可能不值得爲這種情況。謝謝 – cfrederich 2011-06-14 14:42:45

+0

@Marc乙 - 你應該把這作爲一個答案! – T9b 2011-06-14 14:47:37

回答

1

根據this您可能需要它。這是一個ID。

+0

確實擁有所有的INDEX(在整個文件中有很多)有所作爲/是否有必要? – cfrederich 2011-06-14 14:36:50

+0

只有在您計劃對錶的非關鍵字段進行復雜選擇時才需要索引,並且您需要快速訪問特定的字段組合。我不知道計劃的用途是什麼,我假設你知道你需要這些指數。 – T9b 2011-06-14 14:46:20

+0

我的意思是我掌握了它們的用途等,但是它們都是通過mysql工作臺轉換進行的。我可能會最終把它們帶出去,因爲選擇不會是複雜的,也不是速度太重要。謝謝。 – cfrederich 2011-06-14 15:04:44