フォロー/お気に入りシステムを実装したいと思います。データベース/テーブル構造を実装する方法は 2 つありますが、どちらを実装すればよいかわかりません。これらのうち、ベスト プラクティスと見なされるのはどれですか。最も重要なのはその理由です。
すべてのフォロワーを 1 つの文字列にまとめました。すべてのフォロワーを単一の文字列に入れることで、冗長な行の量を減らします。
元。
ID (1) || ユーザー ID (1) || follower_ids (2、3、45)
'CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1';
'CREATE TABLE `follow` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL,
`follower_ids` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1';
また
各 follow_id を個別に配置しますが、同じ user_id に対して 3 つの行を持つことで冗長性を追加します。
元。
id (1) || ユーザー ID (1) || フォロワー_id (2)
id (2) || ユーザー ID (1) || フォロワー_id (3)
id (3) || ユーザー ID (1) || フォロワー_id (45)
'CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1';
'CREATE TABLE `follow` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL,
`follower_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1';