+-------------+----------------------------+-------------------+-----------+-----------+-------------------+
| postal_code | city_district | city | district | region | state |
+-------------+----------------------------+-------------------+-----------+-----------+-------------------+
| 60313 | Innenstadt | Frankfurt am Main | NULL | Darmstadt | Hessen |
| 10719 | Charlottenburg-Wilmersdorf | Berlin | NULL | NULL | Berlin |
| 73773 | NULL | Aichwald | Esslingen | Stuttgart | Baden-Württemberg |
+-------------+----------------------------+-------------------+-----------+-----------+-------------------+
有时,city_district,district和region可以为NULL。小城市没有城区。一个城市(法兰克福)可以包括/成为一个区。一个城市(柏林)可以包括/成为一个区域和一个地区。
表格为空,将从验证的用户输入中填充。我为每个列创建了自己的表并加入了它们,如下所示:
邮政编码:city_id
city_district:city_id
city:district_id
地区:region_id
region:state_id
州:名称
SELECT
*
FROM
postalcode
LEFT JOIN
city ON postalcode.city_id = city.id
LEFT JOIN
district ON city.district_id = district.id
LEFT JOIN
region ON district.region_id = region.id
LEFT JOIN
state ON region.state_id = state.id;
那太好了吗?过度正常化?如何使用NULL值连接表?我想用Joins获得上面的表格。如果我想在“邮政编码”之后加入“citydistrict”,我会收到一条错误消息“Not unique table / alias”。我如何正确地对表格进行别名?
邮政编码:https://en.wikipedia.org/wiki/Postal_codes_in_Germany
市区:https://en.wikipedia.org/wiki/Stadtbezirk
区: https://en.wikipedia.org/wiki/Districts_of_Germany
地区:https://en.wikipedia.org/wiki/Regierungsbezirk
州:https://en.wikipedia.org/wiki/States_of_Germany
答案 0 :(得分:0)
德国约有8K邮政编码?使用 no 规范化时,表可能大约为1-2MB - 这是一个非常小的数量。根据您想要的索引,最高可达3MB。
每个级别的规范化都过度规范化。
每个postal_code都在city
吗?如果是这样,那么妥协就是有两个表:
postal_code, city_district, city_id
city_id, city, district, region, state
这样做可能会将磁盘占用空间减少一半。