다음 표가 있으며 기본 키, 수퍼 키 및 후보 키를 얻는 방법을 알고 싶습니다.기본, 후보 및 수퍼 키
후보 키가 최소 수퍼 키임을 알고 있습니다.
올바른 기본 키 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');
(CountyId, CountyId)은 두 개의 행에 동일한 값이 있으므로 키가 아닙니다. CountyId가 키에 속하는지 여부는 기능적으로 PlaceId에 의존하는지 여부에 따라 달라집니다 (4 개의 샘플 행을 기준으로 표시되지만 일반적으로는 아닐 수도 있음). –
나는 그 열을 키로 사용하지 않을 것이고,'varchar (45)'ouch! 장소, 국가 및 참석자별로 새 테이블을 만든 다음 새 테이블 각각의 int pk를 사용하여이 방문 테이블로 다시 FK합니다. int 값을 가진 참석자가있는 것 같습니다. 왜 varchar (45)를 사용합니까? –