2011-12-09 71 views
0

誰能告訴我什麼是KEY fk_pickup_methodpickup_method_id), KEY fk_deliv_methoddelivery_method_id)行的含義。由於pickup pickup方法和deliv_method不是表格。那麼這些線的用途是什麼?Mysql Table Key

CREATE TABLE `test` (
`idTest` int(11) NOT NULL AUTO_INCREMENT, 
`Name` mediumtext NOT NULL, 
`email` varchar(45) NOT NULL, 
`password` varchar(45) NOT NULL, 
`firstname` varchar(45) NOT NULL, 
`lastname` varchar(45) NOT NULL, 
`phone` bigint(20) unsigned NOT NULL, 
`address_street` varchar(128) NOT NULL, 
`address_apt` varchar(45) DEFAULT NULL, 
`address_city` varchar(128) NOT NULL, 
`address_state` varchar(2) NOT NULL, 
`address_zip` int(11) NOT NULL, 
`fax` bigint(20) unsigned DEFAULT NULL, 
`account_balance` float NOT NULL DEFAULT '0', 
`delivery_radius` float DEFAULT NULL, 
`pickup_method_id` int(11) NOT NULL DEFAULT '0', 
`delivery_method_id` int(11) NOT NULL, 
`is_deleted` tinyint(1) NOT NULL DEFAULT '0', 
`lat` float NOT NULL DEFAULT '0', 
`lng` float NOT NULL DEFAULT '0', 
`timezone` varchar(45) NOT NULL, 
PRIMARY KEY (`idTest`), 
UNIQUE KEY `phone_UNIQUE` (`phone`), 
KEY `fk_pickup_method` (`pickup_method_id`), 
KEY `fk_deliv_method` (`delivery_method_id`) 
) 
+0

請刪除'java'標籤,因爲這似乎並沒有涉及到Java ... – home

+0

@Home做.... – ManseUK

+0

@ManseUK:謝謝,只是不想自己做:-) – home

回答

3

KEY fk_pickup_method (pickup_method_id) 定義了一個名爲fk_pickup_method表列pickup_method_id索引

當您運行EXPLAIN時,在possible_keys列下您將看到索引的名稱。

通常的做法是調用鍵作爲它索引的列。如果您未指定密鑰名稱,則這是默認行爲。

4

它們是()的列中的INDEX。但是這些字段並不侷限於獨特。

在此MySQL document link中查找{INDEX|KEY}

+1

注意:由於名稱包含'fk_',因此它們可能被設置爲FOREIGN KEYS,但它們已被創建爲INDEXes。 – MatBailie

0

我的猜測是這些意圖是FOREIGN KEY約束和參考其他表。

當定義了FOREIGN KEY約束時,InnoDB引擎會創建一個索引(如果沒有)。

MyISAM引擎會忽略FOREIGN KEY約束,但它仍會創建索引。例如:

CREATE TABLE test 
(test_id int NOT NULL AUTO_INCREMENT, 
    delivery_method_id int NOT NULL, 
    PRIMARY KEY (test_id), 
    FOREIGN KEY fk_deliv_method (delivery_method_id) 
    REFERENCES delivery_method(delivery_method_id) 
) ENGINE=MyISAM 
    DEFAULT CHARSET=utf8 ; 

然後:

SHOW CREATE TABLE test ; 

CREATE TABLE `test` (
    `test_id` int(11) NOT NULL AUTO_INCREMENT, 
    `delivery_method_id` int(11) NOT NULL, 
    PRIMARY KEY (`test_id`), 
    KEY `fk_deliv_method` (`delivery_method_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8