ページを閲覧したり、曲をストリーミングしたり、ダウンロードしたりしたユーザIDのリストを保存する必要があります。私がリストを使って行うことは、それを追加して表示することです。それより多くの情報を保存する必要はありません。私は2つの解決策を考え出しました。どちらが優れている、または私は逃したより良い解決策があります:ユーザIDのリストをmysqlテーブルに保存する
KISSソリューション - (表示、ダウンロード、上記の3つの相互作用のそれぞれの主キー楽曲IDとテキストフィールドを持つ1台、ストリーム)には、ユーザーIDのカンマ区切りリストがあります。これに追加するのは単なる連結操作になります。
"ベストプラクティス"の解決策 - ソングIDと、対話を行ったユーザーIDのフィールドのプライマリキーを持つ3つのテーブルがあります。各行には1つのユーザーIDがあり、日付などのものを追加できます。
私がオプション2に傾倒させる1つのことは、ユーザーがすでに曲に投票したかどうかを確認する方が簡単かもしれないということですか?
TL; DRバージョン - それは、カンマ区切り値として配列を保存、または別のテーブルの行のアレイ内の各項目を有するようにテキストフィールドを使用した方がよいです。
私はいつもどんなに速いのですか?私はいつも驚いています。私は良い答えを得ることができます...ありがとう、おそらくそれをします。ストアドプロシージャを使用して、操作テーブルのすべてのオーバーヘッドを処理するか、コード内で行うことをお勧めしますか? – Mikle
これはもっと主観的な答えです。私は個人的にストアドプロシージャが好きですが、決してそれらを使用しません。どうして?私はSQLでのコーディングが気に入らないので、それだけです。しかし、私は、強力なDBは、外国キー、制約、CRUDロジックなど、可能な限り、その中にすべてのロジックを持たなければならないと信じています。 – Seb
私はストアドプロシージャなしで行くだろう。アプリケーションが大きくなり、誰かがデータベースエンジンを変更することにしたらどうなるでしょうか?ストアドプロシージャは完全に移植可能ですか?また、クラスメソッド内で何が起きているのかを見ることがよりわかりやすいです。また、2:私はSQLでコーディングが好きな人には会っていませんでした。 –