2011-07-03 38 views
-3

我已在下面的Django模型:瞭解MySQL的CREATE TABLE語法

class UserProfile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    full_name = models.CharField(max_length=100) 
    network = models.ForeignKey(Network) 
    positions = models.ManyToManyField(Position, through ='Timestamp', blank=True) 
    featured_video = models.ForeignKey(VideoInfo, blank=True, null=True) 

SHOW CREATE TABLE userprofile_userprofile,我得到了下面的MySQL輸出:

| userprofile_userprofile | CREATE TABLE `userprofile_userprofile` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `user_id` int(11) NOT NULL, 
    `full_name` varchar(100) NOT NULL, 
    `network_id` int(11) NOT NULL, 
    `featured_video_id` int(11) DEFAULT NULL, 
    `bio` longtext NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `user_id` (`user_id`), 
    KEY `userprofile_userprofile_fb2a452b` (`network_id`), 
    KEY `userprofile_userprofile_58bbe944` (`featured_video_id`), 
    CONSTRAINT `featured_video_id_refs_id_b7c2ab56` FOREIGN KEY (`featured_video_id`) REFERENCES `userprofile_videoinfo` (`id`), 
    CONSTRAINT `network_id_refs_id_f5c27879` FOREIGN KEY (`network_id`) REFERENCES `network_network` (`id`), 
    CONSTRAINT `user_id_refs_id_da7416c6` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=31034 DEFAULT CHARSET=latin1 | 

什麼最後的七條線在這裏做什麼?他們有什麼意義?

  • ​​
  • key
  • constraint
  • engine=InnoDB
  • auto-increment=31034
+4

-1沒有事先研究。以上所有內容都包含在MySQL文檔中。如果文件中還沒有回答[深入]問題,那麼這些問題可能會成爲一個很好的問題。這個一般的洗衣清單,沒有。 – 2011-07-03 03:54:39

回答

2
  • 密鑰創建索引
  • 唯一鍵是創建一個強制所提到的列的唯一值的索引。
  • 約束......外鍵正在創建一個外鍵引用,限制插入的值只被那些已經存在於被引用表的 中。
  • auto_increment 設置啓動auto_increment 列值。