我有下面的表,我想知道如何知道如何知道主键,超级键和候选键。小学,考生和超级密钥
我知道候选键是超级键的最小值。
这是正确的主键PlaceId CountyId
,候选键PlaceId, CountyId, Date
和超键是PlaceId, CountyId, Date, Attendees
?
CREATE TABLE IF NOT EXISTS `visits` (
`PlaceId` varchar(45) DEFAULT NULL,
`CountyId` varchar(45) DEFAULT NULL,
`Date` date NOT NULL,
`Attendees` varchar(45) DEFAULT NULL,
INSERT INTO `visits` (`PlaceId`, `CountyId`, `Date`, `Attendees`) VALUES
('Bangor', 'Gwynedd', '2012-05-03', '34'),
('Bangor', 'Gwynedd', '2012-05-04', '24'),
('Rhyl', 'Denbighshire', '2012-05-06', '14');
(PlaceId,CountyId)不是关键,因为有2行具有相同的值。 CountyId是否属于关键字取决于它是否在功能上依赖于PlaceId(它看起来是基于4个样本行,但可能并不普遍)。 –
我不会使用这些列中的任何一个作为键,'varchar(45)'ouch!我为每个地方,国家和与会者创建新表格,然后使用每个新表格的int pk将FK返回到此访问表格。你似乎有int值的参加者,为什么使用varchar(45)呢? –