1

フリーベースの 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 つのテーブルに格納できます。これは正規化されず、すべてのテーブル、特にエッジ テーブルが非常に大きくなります。

最善の解決策は何ですか、または別のより良い解決策はありますか?

4

0 に答える 0