0
我有以下MySQL的創建語句:MySQL的約束與鍵 - 和命名他們
CREATE TABLE `phppos_customers` (
`person_id` int(10) NOT NULL,
`account_number` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`company_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`balance` decimal(23,10) NOT NULL DEFAULT '0.0000000000',
`taxable` int(1) NOT NULL DEFAULT '1',
`cc_token` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`cc_preview` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`card_issuer` varchar(255) COLLATE utf8_unicode_ci DEFAULT '',
`tier_id` int(10) DEFAULT NULL,
`deleted` int(1) NOT NULL DEFAULT '0',
UNIQUE KEY `account_number` (`account_number`),
KEY `person_id` (`person_id`),
KEY `deleted` (`deleted`),
KEY `cc_token` (`cc_token`),
KEY `phppos_customers_ibfk_2` (`tier_id`),
CONSTRAINT `phppos_customers_ibfk_1` FOREIGN KEY (`person_id`) REFERENCES `phppos_people` (`person_id`),
CONSTRAINT `phppos_customers_ibfk_2` FOREIGN KEY (`tier_id`) REFERENCES `phppos_price_tiers` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
在創建它似乎不會自動創建索引的約束,所以我創建了一個。這是真的? (我想我不知道我是否需要兩者)
它是否對名稱鍵造成任何傷害與約束相同?
我的理解是:
使用索引,以加快搜索
約束是用於確保數據的完整性(例如確保所有客戶指向一個人)
好的謝謝你的信息 –