我想通过创建一个主键来创建一个表并避免重复的条目。问题是我不知道应该将哪些列添加到此 KEY。考虑下表:
CREATE TABLE `customers` (
`id_c` int(11) unsigned NOT NULL,
`lang` tinyint(2) unsigned NOT NULL,
`name` varchar(80) collate utf8_unicode_ci NOT NULL,
`franchise` int(11) unsigned NOT NULL,
KEY `id_c` (`id_c`),
KEY `lang` (`lang`),
KEY `franchise` (`franchise`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
id_c:客户 ID。它可以是一个企业。假设McDonald's
lang:联系语言。
boss : Boss' name
特许经营权:如果不为零,就是特许经营权。罗马、巴黎、伦敦的麦当劳……
如您所见,每个ENTERPRISE可以在每个国家拥有不同的中央“商店”(联系语言),但在每个城市也可以有不同的特许经营权(老板的名字会不同)。
我希望能够插入新行,其中id_c,lang可能不明显(同一国家/地区的许多特许经营权)。但是只有当 (id_c,lang)相同(对于其他 id_c,lang 组合...名称可能相同)。只有当没有在同一 (id_c,lang) 对中分配特许经营权时,特许经营权也可以相同。
我在考虑 PRIMARY KEY ( lang
, name
),但这可能不是最好的方法。这个表结构是不是太复杂了?