主キーについてあなたが言ったことを除いて、あなたのアプローチは確かに正しい道です。主キーは一意である必要があります。主キーとして複数のフィールドを持つことができますが、キー自体は一意である必要があります。
したがって、次のテーブルがあります。
CREATE TABLE `wall` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` INT(10) UNSIGNED NOT NULL,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`),
INDEX `user` (`user_id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
CREATE TABLE `user` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
CREATE TABLE `message` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`wall_id` INT(10) UNSIGNED NOT NULL,
`user_id` INT(10) UNSIGNED NOT NULL,
`message` TEXT NOT NULL,
PRIMARY KEY (`id`),
INDEX `wall` (`wall_id`),
INDEX `user` (`user_id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
user
次に、テーブルをuser_id
とwall
に関連付けますwall_id
。