2011-06-14 202 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