データベーステーブルの設計に関する提案が必要な状況があります。
バックグラウンド
PHP (正確には Cakephp ) でアプリケーションを開発しています。xml ファイルをアップロードすると、ファイルが解析され、データがデータベースに保存されます。これらの XML はファイルまたは URL フィードである可能性があり、これらはデータのさまざまなサプライヤーから購入されます。ソース url からさまざまな会場データを収集することを目的としています。会場は、ホテル、映画館、学校、レストランなどのようなものです。
問題
これらの会場の最初のテーブル構造は次のとおりです。テーブルは、最初に一般的な情報を格納するように設計されています。
id
Address
Postcode
Lat
Long
SourceURL
Source
Type
Phone
Email
Website
さまざまなソースから得られるデータが増えるにつれて、さまざまなタイプの会場には多くの属性があることに気付きました。
たとえば、ホテルは次のような属性を持つことができます
price_for_one_day, types_of_accommodation, Number_of_rooms etc
学校にはそれらがありませんが、属性のセットが異なります。レストランには他の属性があります。
私の最初のアイデアは、 vanue_attribute_names 、 Venue_attributes という 2 つのテーブルを作成することです。
##table venue_attribute_names
_____________________________
id
name
##table venue_attributes
________________________
id
venue_id
venue_attribute_name_id
value
そのため、新しい属性を検出した場合は、その属性とその値を関係を持つ属性テーブルに作成します。しかし、これは正しいアプローチではないと思います。これには他のアプローチがあると思いますか?また、テーブルが巨大になると、結合や SQL クエリが増加するため、パフォーマンスの問題が発生する可能性があります
列として可能なすべての属性を持つ可能な限り広いテーブルを作成するのは正しいアプローチですか? 私にお知らせください。参照できるリンクがあれば、それをたどることができます。ありがとう