2011-01-09 4 views
0

Dieser Code-Auszug stammt aus der Datei database.sql, die mit der KohanaJobs App geliefert wird.MySQL: Was bedeutet "KEY" beim Erstellen einer Tabelle?

CREATE TABLE IF NOT EXISTS `roles_users` (
    `user_id` int(10) unsigned NOT NULL, 
    `role_id` int(10) unsigned NOT NULL, 
    PRIMARY KEY (`user_id`,`role_id`), 
    KEY `fk_role_id` (`role_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 



CREATE TABLE IF NOT EXISTS `sessions` (
    `session_id` varchar(24) NOT NULL, 
    `last_active` int(10) unsigned NOT NULL, 
    `contents` text NOT NULL, 
    PRIMARY KEY (`session_id`), 
    KEY `last_active` (`last_active`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

Warum wurde nur KEY oben verwendet? Bedeutet es nur, dass sie als FKs verwendet werden?

+0

Warum die Anzeigebreite von 10, wenn Sie kein Zerofill verwenden? Warum deklarieren Sie es nicht einfach als: user_id int unsigned not null? Oh, und warum die Back-Ticks auch ??? –

+0

@ f00 - Sorry, hast du nicht verstanden, was du meinst? – coder9

+1

http://pastie.org/1442882 –

Antwort

1

die 'Schlüssel' Linie einfach sagt MySQL, dass die Tabelle einen Index auf dem 'last_active' Feld haben sollte.

Fremdschlüssel in MySQL werden über 'FOREIGN KEY' definiert, obwohl diese Definition nicht berücksichtigt wird, es sei denn, Sie verwenden InnoDB als Speichermodul.

Für weitere Informationen (ich würde empfehlen, um ehrlich zu sein), sollten Sie einen Blick auf die vollständige CREATE TABLE Syntax-Seite.

+0

danke für den Link. Ich habe dafür gegoogelt, aber alles, was ich gefunden habe, war die Definition des Fremdschlüssels, nicht nur der Schlüssel. – coder9

5

KEY wenn es dort verwendet wird, gibt es nur ein anderes Wort für INDEX.

KEY ist normalerweise ein Synonym für INDEX. Das Schlüsselattribut PRIMARY KEY kann auch als nur KEY angegeben werden, wenn es in einer Spaltendefinition angegeben wird. Dies wurde zur Kompatibilität mit anderen Datenbanksystemen implementiert.

(Source)

+0

danke für die schnelle Antwort. :) – coder9

+0

können wir mehrere 'KEY's für jede Fremdschlüsselspalte haben? – coder9