フリーベースの rdf スキーマを django モデルに変換するプログラムを余暇にいじっています。データベースは、このアプローチで合理的に正規化する必要があります。問題は、syncdb を実行した後にテーブル カウントを行うと、最終的に 1000 を超えるテーブルになることです。これは、本、映画、および密接に関連するものに関するスキーマだけからのものです。
何千もの正規化されたテーブルを使用するのが最善ですか、それとも情報をより少ないテーブルに変換する必要がありますか (以下を参照)。
以下は、現在構築されている django モデルの小さな例です。
class Type_content_uploadedby(...):
f_content = BigForeignKey(...)
f_uploaded_by_rank = models.IntegerField(...)
f_content_rank = models.IntegerField(...)
f_uploaded_by = BigForeignKey(...)
class Meta():
unique_together = (("f_uploaded_by", "f_content"),)
app_label = 'db'
class Type_content(...):
object_fk = BigForeignKey(...)
f_length = models.BigIntegerField(...)
f_blob_id = models.CharField()
f_language = BigForeignKey(...)
f_uploaded_by = models.ManyToManyField(...)
f_media_type = BigForeignKey(...)
f_text_encoding = BigForeignKey(...)
class Meta():
app_label = 'db'
作成するテーブルを減らす 1 つの方法は、ドメイン、型、およびプロパティの構造情報をいくつかのテーブルに格納し、すべての外部キー リンクを 1 つの巨大なエッジ テーブルに格納することです。すべてのデータ型 (string、int、data、...) は、それぞれがプロパティ外部キーとオブジェクト外部キーを持つ 1 つのテーブルに格納できます。これは正規化されず、すべてのテーブル、特にエッジ テーブルが非常に大きくなります。
最善の解決策は何ですか、または別のより良い解決策はありますか?