私は各行がポッドキャストのエピソードを表すMySQLデータベースを持っています。私は各エピソードごとにショーノートを入れたいので、PHP経由で行ごとに複数のリンクを抽出できる必要があります。mysqlの1行に複数のリンク
これを達成するための最良のデータフィールドは何でしょうか?私はリンクテーブルを介してリンクを含むことがこれを行う唯一の方法かもしれないと思っていますが、誰かがもっと簡単な方法を知っていれば、それについて聞きたいです。
私は各行がポッドキャストのエピソードを表すMySQLデータベースを持っています。私は各エピソードごとにショーノートを入れたいので、PHP経由で行ごとに複数のリンクを抽出できる必要があります。mysqlの1行に複数のリンク
これを達成するための最良のデータフィールドは何でしょうか?私はリンクテーブルを介してリンクを含むことがこれを行う唯一の方法かもしれないと思っていますが、誰かがもっと簡単な方法を知っていれば、それについて聞きたいです。
ポッドキャストあたりのリンク数が柔軟であるため、新しいテーブル(podcast_link
)の使用をお勧めします。 text
フィールドをpodcast
テーブルに追加すると、リンクを表示したいときに解析するため効率的ではありません。 これにより、たとえばポッドキャストあたりのリンク数を数えると、「関連リンクを表示する(4)」と表示され、リンクにフィールドを追加することができます。リンクだけでなくリンクのタイトルも表示できます。特に、リンクごとに情報を追加したい場合があります。
これは間違いなく最も魅力的です私への道。あなたは正しいです、それは後で拡張機能も開きます。 – Ryan
PHPでいくつかのリンクを解析する場合とJOINを使用するより複雑なMySQLクエリを実行する場合のパフォーマンスの差は、おそらく無視されます(存在する場合でも)。また、PHP配列のシリアライズ/シリアライズを使用する場合、リンク数のカウントやタイトルの提供も可能です。私は、追加のテーブルを使うことは、将来の証明であること、すなわち追加の機能を提供することに同意します。どのエピソードが同じリンクを参照しているか、いくつのエピソードがリンクを使用しているかを表示しますが、あなたの例では、追加のフィールドだけで同じことができるため、この利点は示されません。 – dbrumann
シリアル化された配列を使用すると、クエリでカウントを行うのではなく、カウントを表示したい場合でも、毎回完全な配列を解析する必要があります。これは正規化の基本でもあり、データをより使いやすく、使いやすく、管理しやすくします。 "あなたの例はこれの利点を示していません" - 私が望むデータベースの全機能をリストアップするとは期待できません。 – Richard
explode()
機能:
あなたはこのような構造で、たとえば、あなたのリンクを保存する必要があります。データベースの行で
http:\\example.com\podcast01.mp3,http:\\example.com\podcast02.mp3,http:\\example.com\podcast03.mp3
。あなたがそれらを抽出したいとき
あなたは簡単にこの方法でexplode()
機能を使用することができます。
echo ($links_array[0]);// output : http:\\example.com\podcast01.mp3
幸運
あなたのアイデアかもしれない非常によく:例えば
あなたが探しているものになります。少し簡単にしたい場合は、追加のCLOBフィールドとしてエピソードに関連付けられたリンクのリスト、つまり単一の行を追加し、シリアル化された配列をそこに格納することができます(php serializeまたはJSON-notationのいずれか)。あなたの質問は、これらのリンクが各エピソードの説明のようなものか、タグのようなものか、つまり同じページにリンクしているエピソードを見つけることができるかどうかについて少し曖昧です。 – dbrumann