質問: $name; } } ``` ``` CREATE TABLE `postings` ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, userid int(11) NOT NULL, body varchar(1000) NOT NULL, time datetime NOT NULL ); ``` ``` CREATE TABLE `user` ( userid INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name varchar(100) NOT NULL, pass varchar(100) NOT NULL ) ; ``` これらが関係しているSQLテーブルとオブジェクトのクラスです。 質問❶ 今いいね、いいね解除追加のためにpostingsテーブルにいいねのの数を保存するlikeカラム(いいねで数が増え、解除で数がへる)と 誰がいいねしたのかを把握するカラムを追加しようと考えていたのですが、 以下のようなlikeテーブルを作った方が得策でしょうか。 ``` CREATE TABLE `likes` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `article_id` bigint(20) NOT NULL DEFAULT '0', `user_id` bigint(20) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `ix01_likes` (`user_id`,`article_id`), KEY `ix02_likes` (`user_id`), KEY `ix03_likes` (`article_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ; ``` 質問❷ 又この場合、created_atとupdated_atの違いはなんでしょうか。 質問❸ created_atとupdated_at にそれぞれプライマリーキーがついていますが、 これは(1,3),(2,4),(4,2),(3,1)という値があった場合、数字の組み合わせがキーであると考えていいですか。
回答: フレームワークがわからないのでざっくり。 ツイートクラスにはUserクラスの配列を新たに$wholikedとして持てばよいと思います。 DBはフレームワークがなんとかしてくれると思いますが、MySQLなら概念的には、ツイートのidとユーザのidを持つ連結用の中間テーブルができます。