我正在努力为国家元首建立亲子关系。我在考虑两种方法-
1)创建单个表-
主键|名称|类型|父项
1 |美国|国家|无效
2 |英国|国家|无效
3 |加州|州| 1
4 |洛杉矶|城市| 3
5 |肯特|州| 2
6 |奥巴马|总统| 1
7 |喀麦隆|下午| 2
此表的主键将引用另一个表,该表将记录州/市/国家一段时间内的人口增长。
2)第二种方法是为国家、国家、首脑和城市创建多个表格,然后
使用外键引用建立关系。
然后每个表的主键(城市/州/国家)将引用人口增长表
方法1比2有什么好处吗?查询速度快吗?
最佳答案
方法1是一个EAV表,几乎总是最糟糕的选择,除非您绝对不能预先预测您需要的字段(例如定义您可能希望从各种医疗测试中存储的所有内容)。对于不受变化影响的地理数据,我会避免选择1,比如瘟疫。它很难查询,会成为阻塞争用的来源,通常只是一个坏主意。
记住,当以关系方式设计时,关系数据库最有效,不要在定义数据库表时使用面向对象的思想。如果你真的,真的需要EAV功能,至少在一个noSQl数据库中这样做,这个数据库对这类事情更为优化。
关于postgresql - 数据库设计父子表与多个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10409725/