一个学校有 N 个班级,一个班级有 N 个学生。
以下两种方式如何选择:
1.使用单独列
在学校
表使用 classesCount
和 studentsCount
两个列来分别存储该校班级
数量、该校学生
数量,在班级
表中使用 studentsCount
列存储该班学生
数量。
在班级
实体增、删时,更新学校
表的 classesCount
列;在学生
实体增、删时,更新班级
表及学校
表的 studentsCount
列。
2.使用数据库查询
班级数量和学生数量由数据库查询获得。
select * from cmapus;
select count(*) as classesCount from classes group by campus_id;
select count(*) as studentsCount from students group by campus_id;
方式一在增、删时需要做额外操作,会存在事务不能保证正确的情况吗?
方式二在数据量大的时候性能会很差吗?
类似这种数据库设计问题,有推荐的书籍参阅吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.