关于数据库的设计,我有一个非常基本的问题.我以为我知道答案,但在看了三重下拉菜单的在线教程和演示数据库的设计后,我不再那么肯定了.
好的,这是设置,涉及三个表.
第一个表:tblcountry字段:country_id国家/地区
第二个表:tblstate字段:state_id country_id state
第三个表:tblcity字段:cidy_id state_id city
现在我的问题是:在表3中,是否有必要包括countryid?通过使用SQL,您可以查询该城市所在的国家/地区....或者在城市表中引用该国家/地区的设计是否良好?
我希望有人能帮帮忙 :-)
简短的回答,正确的99.9%的时间:不.你已经通过州记录提到了这个国家.
答案很长,在0.1%的时间内:您可能需要从城市直接引用该国家/地区,因为您对一个国家/地区的城市有很多查询,并且在查询中添加第二个表格会使查询需要更长时间.
当然,第二种情况不适用于城市,州和国家的记录集,但对于其他类型的数据,如果您管理大量记录,则很可能.
编辑:在我的工作中,我有很多这样的情况,我只是在表三或四级参考下来保留额外的字段.这些是庞大的数据库,并且在所有常见查询中放置中间表确实会对数据库产生压力(每个查询使用的内存更多).所以我会从没有直接引用开始,然后根据需要添加"快捷方式"字段.这涉及到解决可伸缩性问题的问题,这超出了初学者级别的问题.此外,如果您在下游表格中添加快捷方式字段,那么这是您的应用程序的额外断点(当您将城市更新到另一个国家/地区时要更新两条记录),因此请记住这一点.