0

独自のソーシャル ネットワークをゼロから構築することに決めました。これは興味深い演習になると気づき、Drupal Commons のようなすぐに使えるソリューションをカスタマイズする方法を学ぶのに多くの時間を費やしたくなかったからです。これまでのところ、基本的なログイン/ログアウト機能、新しいユーザーの作成、アバターのアップロードなどをうまく行っています。また、ユーザーによる投稿を保持する MySQL データベース テーブルもあります。

テーブルで基本的なクエリを実行すると、投稿、その ID、およびそれを作成したユーザー (userID はテーブルpostsからの外部キー) を簡単に取得できます。しかし、私はテーブルusersを実装したいと決めました. このようにして、投稿を日付や投稿 ID だけでなく、トピック別に並べ替えることができます。threadsthreadID

ただし、新しいスレッドを投稿するロジックがわかりません。私のデータベースは、ユーザー、投稿、スレッドのテーブルで構成されています。データベースでは、これらは次のように構成されています (関連するフィールドのみが示されています)。

Users         Posts         Threads
-----         -----         -------
userID (pk)   postID (pk)   threadID (pk)
              userID (fk)  
              threadID (fk)

上記のフォーマットはプレビューでは問題ないように見えますが、投稿後に完全に不安定になったら申し訳ありません

ユーザーの作成は投稿の作成とは別であるuserIDため、新しい投稿を作成するときに、すでに作成済みで利用可能です。その後、投稿は独自の投稿 ID を自動生成します。私が先に進むのを妨げているのは、同じトランザクションで新しいトランザクションを作成して、お互いを適切に認識できるようにする方法がよくわからないことthreadID です postID。新しいスレッド ID が必要になるのは、誰かが新しいスレッドを開始した場合だけです。返信は既存のスレッド ID を使用し、一意の postID を取得します。

誰かがこのトランザクションの基本的なロジックに光を当てることができれば、本当に感謝しています. 過去にリレーショナル データベースをあまり扱ったことがなかったので、これは役立つことを学ぶ機会だと思います。

4

1 に答える 1

1

私が行う方法は、threadID を parentID に変更することです。これは、スレッド内の子の場合は別の postID を参照し、通常の親投稿の場合は -1 (または 0) を参照します。このようにして、どの投稿も簡単にスレッド化でき、Threads テーブルも必要ありません。これがあなたにとって意味があるかどうか教えてください:)

于 2013-08-14T17:45:39.710 に答える