我在业余时间修改了一个将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'
我可以尝试创建更少表的一种方法是将域的结构信息,某些表中的类型和属性以及所有外键链接存储在一个庞大的边表中。所有数据类型(字符串,整数,数据......)都可以存储在一个表中,每个表都有一个属性外键和一个对象外键。这不会被规范化,所有表格,尤其是边缘表格都会非常大。
什么是最好的解决方案,还是有另一个更好的解决方案?