1

我在业余时间修补了一个将 freebase 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'

我可以尝试创建更少表的一种方法是将域、类型和属性的结构信息存储在一些表中,并将所有外键链接存储在一个巨大的边缘表中。所有数据类型(字符串、整数、数据...)都可以存储在一个表中,每个表都有一个属性外键和一个对象外键。这不会被规范化,所有的表,尤其是边缘表都会非常大。

最好的解决方案是什么,或者还有其他更好的解决方案吗?

4

0 回答 0