我正在努力创建一个由三大洲(非洲,亚洲和欧洲)组成的数据库,每个国家/地区使用不同数量的国家和不同数量的语言。例如,
Continent-Country-Language
Africa - Egypt - Arabic
Africa - Egypt - English
Africa - Somalia - English
Asia - China - English
Asia - China - Mandarin
Asia - China - Cantonese
Asia - Japan - japanese
Asia - Iraq - Arabic
Europe - Germany - German
Europe - Belgium - Dutch
Europe - Belgium - French
如果使用5大洲,150个国家和2000种语言,上表变得非常庞大!此外,如果每个变量都链接到一个外部链接,则总工作变得非常痛苦。
我的问题是如何以更有效的方式创建如此大的表?
TIA!
答案 0 :(得分:2)
别。
创建五个表 - 一个用于大陆,一个用于国家,一个用于链接语言和国家,最后一个用于语言。
Continent ContinentCountry Country CountryLanguage Language
------------ ---------------- ---------- --------------- -----------
continent_id <- continent_id name language_id -> language_id
name country_id -> country_id <- country_id name
这称为数据库规范化。
数据库规范化的目标是分解与异常的关系,以产生更小,结构良好的关系。
来自维基百科关于Database Normalization的文章。