Person
次の属性で呼び出されるテーブルがあります。
Car
運転する車に関する情報を保持するというテーブルを実装したいと考えていPerson
ます。複数のユーザーが「Toyota Corolla」を運転する場合、「Toyota Corolla」は文字列として 1 回だけ格納されるように実装したいと考えています。また、誰もが車を 1 台しか所有していないことを前提としています。エントリは定期的に記録されますが、個別のCar
レコードは 5000 にしか達しない場合があります。これまでのところ、次のことを行いましたが、複数のユーザーが同じ車を所有している場合に一度保存できるプロパティを実装するにはどうすればよいですか。ModelNames
CREATE TABLE `Car` (
`idCar` MEDIUMINT UNSIGNED AUTO_INCREMENT ,
`ModelName` varchar(80),
`idPerson` INT NOT NULL,
PRIMARY KEY (`idCar`) ,
FOREIGN KEY (`idPerson`) REFERENCES `Person` (`idPerson`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE=InnoDB;
UPDATE Car, Person
Set Car.idPerson = Person.idPerson
WHERE Car.idPerson = Person.idPerson;
INSERT INTO Car VALUES (1, 'Toyota Corolla', 1);
INSERT INTO Car VALUES (2, 'Mazda 6', 1);
INSERT INTO Car VALUES (3, 'Toyota Corolla', 2);
INSERT INTO Car VALUES (4, 'Pulsar GTI', 3);
SELECT DISTINCT Car.idCar ,Car.ModelName, Person.FullName, Person.idPerson
FROM Person, Car
WHERE Car.idPerson = Person.idPerson
Order by Car.idCar;