几个星期后,我想开始构建一个数据仓库"基于django。数据库应填充可连接到某个位置的数据。例如,与国家或城市相关的人口,或者年降雨量或温度。参数尚未定义,并且会随着时间的推移而变化,但它们通常会有一个数量,时间段(例如每年)和单位(例如:在Y年中国家X的人口数量)。
我的想法是在数据库中创建一个自我引用表,其中包含大陆,国家,地区和城市。一个例子:
ID | parent_id | name
1 | null | Europe
2 | 1 | France
3 | 2 | Paris
我希望有一个表格可以将数据连接到这样的位置:
ID | location_id | parameter_id | from_date | to_date | quantity
1 | 3 | 1 | 01-01-2000 | 31-01-2001 | 3000000
参数: ID |名字|单元 1 |人口|人
从技术上讲,我还想将位置连接到坐标或多边形,以便我可以在地图上显示它们。
(Geo)Django有可能是这样的吗?我觉得GeoDjango将模型类与特定主题相结合,例如在这种情况下的人群。但是,我还不知道我的科目......
或者我应该将数据库结构设计得完全不同?
最后:我想将pgSQL用于postgis数据库,因为它是开源的,似乎是最合适的。但是如果我在本地对网站进行编程我有SQLite,有没有办法在我的Windows计算机上本地运行带有Postgis的pgSQL(这是相当慢的)用于开发?然后,我可以轻松地将它使用例如GitLab推送到生产地点(例如amazone AWS)吗?
非常感谢有关此主题的提示和帮助。
答案 0 :(得分:1)
对于使用Django的分层数据,请使用Django MPTT:
class Region(MPTTModel):
parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)
name = models.CharField(max_length=50, unique=True)
geom = models.MultiPolygonField(null=True, blank=True)
class Parameter(models.Model):
name = models.CharField(max_length=50, unique=True)
class RegionParameter(models.Model):
region = TreeForeignKey(Region, null=True, blank=True, related_name='children', db_index=True...)
param = models.ForeignKey(Parameter...)
from_date = models.DateField()
to_date = models.DateField()
value = models.IntegerField()
您只能在叶子上或层次结构中的所有级别添加地理数据。