私は、ブラウザでレンダリングされた一連のボックスを追跡するシステムのリレーショナルデータモデルを作成しています。各ボックスには、レンダリングされた画像が含まれています。
現在、1つのテーブルがあります:ボックス。各行には、x座標とy座標、幅と高さの列、および画像コンテンツのタイプ(mimeタイプなど)とコンテンツの場所(ファイルパスやURLなど)の列があります。
一部のボックスには1層のネストがあります。つまり、1つのボックスに別のボックスを含めることができます。このような場合、コンテンツタイプの列には特別な値「box」があり、場所はBoxテーブルへの自己参照です。
一部のコンテンツタイプ(少数派)には、コンテンツタイプに関連付けられた追加の値があります。たとえば、画像ファイルがより複雑な複数ページ形式(PDFなど)の場合、どのページをボックスにレンダリングするかを保存する必要があります。
これを1つのテーブルで表すことはできますか/すべきですか?この場合、追加のパラメーターを(たとえば)ファイルURL(/path/to/PDF.pdf?page=4)にクエリ文字列として格納できます。
自己参照ボックスの行の更新を処理するにはどうすればよいですか?つまり、別のボックスを含むボックスを削除する場合は、両方の行を削除する必要があります。場所の列に外部キー制約を使用することはできません。URL(ネストされていないボックスの場合)またはボックスの行ID(ネストされたボックスの場合)のいずれかである可能性があるためです。