正在设计一个基于django的社区程序,有两个关于数据库设计的问题想请教大家:
假设有这样几张表:
user(用户表), topic(主题表),reply(评论表)
user表中的几个字段:id,username及其它若干字段
topic表中的几个字段:id, title, user_id(外键),user_name,hit_num(点击量),reply_num(评论量)
假设这两张表都是百万级大表,使用mysql数据库,从执行效率上考虑下面两个问题:
问题一:
topic表中是否有必要有user_name字段。如果没有user_name字段的话,则每次读取topic列表或单记录信息时,需要表关联读取user表中的username字段。如果topic表中有user_name字段,则在每次添加topic记录时,同时写入创建者的user_name,读取时就不必关联user表了。
问题二:
topic表中是否有必要有reply_num字段。如果没有reply字段,则获取某主题回复总数时要使用count()方法在reply表中计算。如果有reply字段,则每次回复需要更新reply字段+1,需要主题回复数时,可以不再计算直接读取
问题三:
hit_num和reply_num字段是否应当设计在topic表中,还是应当再设计一个用户行为统计表,与user表关联,记录统计信息。这里主要考虑到topic是个字段多记录多的大表,而点击量统计量要频繁更新操作。
偶基础太差,大家见笑。
假设有这样几张表:
user(用户表), topic(主题表),reply(评论表)
user表中的几个字段:id,username及其它若干字段
topic表中的几个字段:id, title, user_id(外键),user_name,hit_num(点击量),reply_num(评论量)
假设这两张表都是百万级大表,使用mysql数据库,从执行效率上考虑下面两个问题:
问题一:
topic表中是否有必要有user_name字段。如果没有user_name字段的话,则每次读取topic列表或单记录信息时,需要表关联读取user表中的username字段。如果topic表中有user_name字段,则在每次添加topic记录时,同时写入创建者的user_name,读取时就不必关联user表了。
问题二:
topic表中是否有必要有reply_num字段。如果没有reply字段,则获取某主题回复总数时要使用count()方法在reply表中计算。如果有reply字段,则每次回复需要更新reply字段+1,需要主题回复数时,可以不再计算直接读取
问题三:
hit_num和reply_num字段是否应当设计在topic表中,还是应当再设计一个用户行为统计表,与user表关联,记录统计信息。这里主要考虑到topic是个字段多记录多的大表,而点击量统计量要频繁更新操作。
偶基础太差,大家见笑。
