私は以下のテーブルを持っています。プライマリキー、スーパーキーと候補キーを取得する方法を知りたいと思っていました。プライマリ、候補とスーパーキー
私は候補キーがスーパーキーの最小であることを知っています。
これは正しいプライマリキー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)は、2つの行に同じ値が設定されているため、キーではありません。 CountyIdがキーに属しているかどうかは、機能的にPlaceIdに依存しているかどうかによって異なります(4つのサンプル行に基づいているように見えますが、一般的ではない可能性があります)。 –
私はこれらの列をキーとして使用しません。 'varchar(45)' ouch!場所、国、出席者ごとに新しいテーブルを作成し、新しいテーブルのそれぞれのint pkを使用してこの訪問テーブルにFKを戻します。 int値を持つ出席者がいるようですが、なぜvarchar(45)を使用するのですか? –