私は SQL の初心者であり、作成中のデータベースの適切なアーキテクチャ設計に近づいていることを確認したいと考えています。
全体的なデザインのより簡単な例を考え出しました。
テーブルがあるとします:
mysql> create table Animals(name varchar(255), flags int);
flags は、肉食動物、両生類、哺乳類などの動物の特性の真理値を保持します。
int は単なる 2 進数であるため、XOR を使用してこれらのフラグをフィルター処理し、一致させたいものを見つけることができます。
または、次のようなテーブルを作成できます。
mysql> create table Animals(name varchar(255), flag1 bit, flag2 bit, flag3 bit);
これに対する私の懸念は次のとおりです。
このアプローチを使用するとビットが無駄になりますか、または flag1 - flag8 がある場合、1 バイトが使用されますか?
最終的に:
これは、この種の設計を行うための適切な方法ですか? そうでない場合は、いくつかのガイダンスをいただければ幸いです。
たとえば、肉食動物、両生類、哺乳類など、哺乳類で同じ名前のエントリを持つテーブルが大量にある可能性があることを理解しています。これにより、フラグを使用したくないのですが、それはほとんど無駄に思えます。