テーブル内の各IDのIDインデックスのリストを格納する方法を知っています。これらは事実上ID間に「関係」を形成します。ここでは、メインテーブルには、これまでのところです:メインMySQLデータベース設計の質問 - インデックスのリスト/配列を格納する
テーブル:
ID、整数、プライマリキー
名、varchar型
text_info_1、varchar型
text_info_2は、 varchar
そして今、各行について、ある行が次の行とどのように関係するかを示す別の行のIDのリストが表示されます。たとえば、ID#5の行は、ID 6,7,9,25、...などと関連している可能性があります。
は、ここで私が考えられてきたオプションは次のとおりです。
は、テキストフィールドなどの新しい列を作成し、これらの整数値のシリアライズされたリストを格納します。その後、私がそれらを必要とするときに、
relation_id(int auto incrementプライマリキー)、name1、name2、[オプションで、リレーションタイプを指定する他のフィールド(nice)]という新しいテーブルを作成します。
私はオプション1がハックのビットであると感じます。私は前にそれをやったことがありますが、おそらくオプション2はより良いデザインですか?
私はスピードが心配です。オプション1を使用すると、main WHERE id = $ idからSELECTリレーションシップを行い、結果をアンシリアル化し、整数インデックスを持つ配列を持つことができます。しかし、オプション2では、何度も(10倍以上)大きくなる表をブラウズし、「SELECT name1、name2 FROM relations」を実行する必要があります。
スピードが私の優先事項です。私は見つけ出すのが好きではあるが、どれがスペースの方が良いかわからない。
どのオプションを使用する必要がありますか?私が考慮していない他の良いオプションはありますか?私はまた、データベース設計に関するいくつかの良い一般的な指摘に感謝します!
ありがとうございます。