2016-03-18 3 views
-1

こんにちは私はいくつかのユーザーといくつかの投稿をしており、ユーザーが投稿を好きにして、 'のように。PHPとMySQLiを使って同様のシステムを作成する最善の方法

私は、私の考えは別の列に1列目のポストを好むユーザ名と同類の数を書いているが、私はしないでください

...テーブルをしましたし、そのテーブルの各行は、1つのポストのためでありますそれが正しいかどうかを知る。

+0

質問が[このサイトのトピック](http://stackoverflow.com/help/on-topic)であることを確認してください。実際に直面している問題に基づいて、実践的で、答えることができる質問をするだけです。わかりやすいオープンエンドの質問は、私たちのサイトの有用性を低下させ、他の質問をフロントページから外します。 –

+0

私の実際の質問は:1つの列に投稿のようなすべてのユーザーが正しいかどうかを書いていますか? – M4HdYaR

+0

これはユーザーが同じ投稿を2回以上好きになるのを妨げません。新しいテーブル(例:好きな場所)を作成して、そこにあるすべての好きなものを保存する必要があります。 –

答えて

0

ユーザーと投稿の両方の表に「id」列があるとします(したがって、少なくとも2つの表「ユーザー」と「投稿」があるとします)。私が理解したところでは、「投稿」テーブルに投稿が好きなユーザー名をすべて書き、投稿を好きなユーザーの数を把握するためのカウンターがあります。ここでは冗長性を導入するのは簡単です。また、ユーザーが削除された場合に何が起こるかについては言及しません(ヒント:大きな混乱)。

アイデアは、投稿が好きなユーザーのIDを入力する新しいテーブル「likes」を作成することです。投稿のIDによって参照されます。だから、このテーブルは基本的に "userid"と "postid"の2つのカラムを必要とします。必要に応じてタイムスタンプの3分の1を追加して、好きな情報を追加することもできます。

これは、(投稿を好きなユーザーの名前を取得するために)いくつかのリクエストを複雑にするかもしれませんが、テーブル関係が良好であれば、クエリを実行する必要なしに退屈な整合性チェックを達成できますこのテーブルに存在してはいけません。もはや存在しない投稿は好きではありません)。そして、あなたは外部キーでこれを行うことができます。

+0

これはまさに私が探しているものです。 <3ありがとう! – M4HdYaR

+0

ここにはかなり新しい概念がたくさんあります(JOIN(郵便からユーザ名を取得する)、一貫性、鍵、外部キー)。しかし、これらを正しく使う方法を学ぶなら、本当に価値があります。特にキーと外部キー、私の意見ではあまりにも多くの開発者によって過小評価される方法。 – Loufylouf

関連する問題