我試圖決定如何存儲一些地址信息。這就是我的想法(這是在Django模型的形式,但你應該能夠閱讀它)存儲街道地址和郵政編碼
class City(models.Model):
name = models.CharField(max_length=100)
province = models.ForeignKey(Province)
data_source = models.PositiveIntegerField(default=DataSources.USER)
latitude = models.DecimalField(max_digits=18, decimal_places=12, null=True, blank=True)
longitude = models.DecimalField(max_digits=18, decimal_places=12, null=True, blank=True)
feature_class = models.CharField(max_length=1, null=True, blank=True)
feature_code = models.CharField(max_length=10, null=True, blank=True)
population = models.BigIntegerField(null=True, blank=True)
elevation = models.PositiveIntegerField(null=True, blank=True)
time_zone = models.CharField(max_length=40, null=True, blank=True)
mod_date = models.DateTimeField(auto_now=True, auto_now_add=True)
class Province(models.Model):
code = models.CharField(max_length=2, primary_key=True)
name = models.CharField(max_length=100)
country = models.ForeignKey(Country)
class Country(models.Model):
code = models.CharField(max_length=2, primary_key=True)
name = models.CharField(max_length=100)
class Address(models.Model):
name = models.CharField(max_length=100)
street = models.CharField(max_length=200)
postal_code = models.ForeignKey(PostalCode)
class PostalCode(models.Model):
code = models.CharField(max_length=10)
city = models.ForeignKey(City)
data_source = models.PositiveIntegerField(default=DataSources.USER)
latitude = models.DecimalField(max_digits=18, decimal_places=12, null=True, blank=True)
longitude = models.DecimalField(max_digits=18, decimal_places=12, null=True, blank=True)
我已經有了一個完整的市,省,國家,郵政編碼數據庫。大部分用戶只會輸入地址。
這樣,如果用戶輸入郵政編碼,我可以爲他自動填充城市,省份和國家/地區字段。但是如果我的數據過時或者不正確呢?然後,用戶只需用正確的信息更新這些字段,然後我就可以相應地更新我的數據庫。
但是,如果他輸入其他人的郵政編碼,然後更新城市到一些不正確的地方會發生什麼?他只是打破了別人的地址。
所以,也許我應該將城市領域轉移到地址類呢?但是,我不能再從郵政編碼中查找城市。
那麼,也許我應該只有兩個模型中的城市?但現在我有重複。這仍然是最好的選擇?
當城市跨越州或者郵政編碼跨越城市或州(他們當然在美國)時,你會怎麼做? – HLGEM 2011-01-31 19:00:14
@HLGEM:不知道他們這麼做......那可能是有問題的。你能舉個例子說明發生了什麼?這意味着我需要在地址中存儲城市和州。 – mpen 2011-02-01 02:43:08