たとえば、次のようなブログがあります。 このブログに保存されているデータは比較的複雑です
保存できるデータ:
映画データ:
音楽データ:
製品データ:
写真データ:
ソフトウェアデータ:
これだけのデータを保存するには、どうすればよいですかテーブルをデザインするには?
それぞれのデータには独自の特性があります。たとえば、音楽には作詞者と作曲家がおり、写真にはピクセルがあります。
テーブルを用意して、データの異なる特性をそれぞれフィールドに与えることは不可能です。
ただし、テーブルに分割すると、タイプやIDなどの基本情報を記録する一般的なテーブル、動画データ用のテーブルが1つ、写真データ用のテーブルが1つ…この場合、すべてを取得したい場合データを大量にクエリする必要があるため、効率が比較的低くなります。
より良い設計ソリューションはありますか?
たとえば、次のようなブログがあります。 このブログに保存されているデータは比較的複雑です
保存できるデータ:
映画データ:
音楽データ:
製品データ:
写真データ:
ソフトウェアデータ:
これだけのデータを保存するには、どうすればよいですかテーブルをデザインするには?
それぞれのデータには独自の特性があります。たとえば、音楽には作詞者と作曲家がおり、写真にはピクセルがあります。
テーブルを用意して、データの異なる特性をそれぞれフィールドに与えることは不可能です。
ただし、テーブルに分割すると、一般的なテーブルにはタイプやIDなどの基本情報が記録され、動画データ用に1テーブル、写真データ用に1テーブル…この場合、すべてのデータを取得したい場合、多くのクエリを実行する必要があるため、テーブルを作成すると効率が比較的低くなります。
より良い設計ソリューションはありますか?
nosqlを使用してmongodbドキュメントなどを保存できます。
畑にこだわる必要はありません。
質問のタイプが mysql5.7
, 可以把存儲數據的字段設置爲json
の場合 (例:
テーブルを分割した後、前後のロジックを別々に記述する必要があります:
フロントデスクで読み取るときは、メインテーブルのデータを直接読み取るのではなく、特定のタイプの関連テーブルを通じてメインテーブルをクエリします。
バックグラウンドでメインテーブルの情報を直接読み取りますが、添付テーブルのデータのみをバックグラウンドリストに表示します。詳細ページ。各付録に特定のフィールドを表示する必要がある場合は、パフォーマンスを多少犠牲にする価値があります。また、これらのフィールドがすべての付録に共通である場合は、メイン テーブルにも記載する必要があります
。
2 階を参照することもできますが、それでも単一タイプのデータベースが必要な場合は、WordPress のライブラリ設計を参照できます。非メインまたは変数タイプの属性を、キーと値の形式でセカンダリ テーブル ストレージに設計します。 ... 考え方は nosql と同じです 一貫性のある ...リレーショナル データベースを使用して実装しただけです
または、EAV 構造設計を使用して、テーブルにデータのみを保存し、そこにコードのレイヤーを追加して、さまざまな種類のデータのニーズを満たすことができます。
具体的な方法については、EAV を検索してください。Magento は、この方法を使用して実装されたオンライン ストアです。