题目:一个简单的论坛系统,以数据库储存如下数据:
用户名,email,主页,电话,联系地址,发帖标题,发帖内容,回复标题,回复内容。
每天论坛访问量300万左右,更新帖子10万左右。
请给出数据库表结构设计,并结合范式简要说明设计思路。
下面是我的试答,大家尽管拍砖啊!
试答:
首先经常变动的数据不能和相对稳定的数据放在同一张表。本题中用户名、emial、主页、电话、联系地址属于相对稳定数据(用户不会没事天天登录论坛改email、电话吧?)。其他关于发帖和回帖的数据都属于经常变动的数据。
另外每天帖子更新10万左右,访问量却有300万左右,可以看出很多人“只看帖(或者回帖)但很少发帖”。但是用户看了某个帖子他不一定要回帖,然而隐含一个需求:必须记录每一个发帖的访问量(我觉得没必要记录该发帖具体有哪些用户访问过)。
所以我大概是这样设计表结构的:(4张表)
用户信息表: user
字段名 数据类型 是否允许为空 键属性
uid INT N 主键
uname VARCHAR N
homepageVARCHAR Y
phone VARCHAR Y
address VARCHAR Y
发帖信息表:post
字段名 数据类型 是否允许为空 键属性
pid INT N 主键
title VARCHAR N
content VARCHAR N
uid(发帖者ID)INT N 外键
发帖访问情况表:visit
字段名 数据类型 是否允许为空 键属性
vid INT N 主键
pid INT N 外键
num(浏览数量)INT N
回帖信息表:reply
字段名 数据类型 是否允许为空 键属性
rid INT N 主键
title VARCHAR N
content VARCHAR N
uid INT N 外键
pid INT N 外键
数据库第一范式就不用说了,实体中的某个属性不能有多个值或者不能有重复的属性。这个很容易满足。
再看第二范式,属性必须完全依赖主键。所以发帖和回帖应该设计为在不同的表,因为回帖内容和发帖内容显然依赖于完全不同的主键,其他的类似。即第二范式在这里影响了分几张表。
第三范式是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。按我的理解是,每张表应该尽可能的“干净”,即用户信息表就存与用户最相关的信息,而不能把帖子信息信息也存到里面去。
回帖和发帖信息表中都有一个外键uid来标识回帖或发帖的作者,这就足够了,你不必再把uname也存到里面去,因为uname可以根据uid从user表中查到。当然有时为了性能需要,可能违背数据库设计三范式,比如违背第三范式的字段冗余约束。
有一个地方我觉得肯定另有玄机,“每天帖子更新10万左右,访问量却有300万左右”,这个比例是1:30,具体什么也说不清楚,还望大家多多讨论,指点迷津
- 浏览: 21050 次
- 性别:
- 来自: 北京
相关推荐
网吧管理系统数据库设计和相关文档网吧管理系统数据库设计和相关文档网吧管理系统数据库设计和相关文档网吧管理系统数据库设计和相关文档以及相关报表网吧管理系统数据库设计和相关文档网吧管理系统数据库设计和相关...
软件数据库设计文档模板 software database design report document" 在软件开发项目中,数据库设计是非常重要的一步骤,它直接影响到软件系统的性能、安全性和可维护性。本文档提供了一份软件数据库设计文档模板...
软件开发过程中数据库设计部分详解 数据库设计是软件开发过程中的一个关键部分,涉及到数据库系统的设计、开发和实施。数据库设计的任务是根据一个组织的信息需求、处理需求和数据库支撑环境,设计出数据库模式 ...
标题“支付交易平台数据库设计文档”表明本文档详细介绍了构建银行支付交易平台时所需设计的数据库架构。数据库设计是信息技术领域中极为重要的一环,尤其是在金融行业,其准确性、完整性和安全性的要求尤为严格。本...
"数据库设计说明书模板" 数据库设计说明书是对数据库的设计和实现进行详细描述的文档,旨在为数据库的开发、测试和维护提供依据。该文档通常包括以下几个部分:项目概况、数据库设计概述、逻辑设计、物理设计、数据...
站内信的数据库设计 一、站内信的概念和特点 站内信是指在网站或平台内部实现的消息传送系统,类似于邮箱,主要由收件箱、发件箱、草稿箱和垃圾箱三部分组成。站内信不同于电子邮件,电子邮件通过专门的邮件服务器...
根据提供的信息,我们可以推断出这是一本关于数据库设计的教程书籍,并且是其第二版。由于具体的页面内容并未给出,我们将基于标题、描述及标签中的信息,对可能涉及的关键知识点进行归纳总结。 ### 数据库设计的...
工资管理系统数据库设计报告是信息技术学院信息管理与信息系统专业的一份课程设计报告,旨在通过实际操作来学习和理解数据库系统的设计与实现。这份报告涵盖了多个关键阶段,包括需求分析、概念设计、逻辑设计以及...
### 教务管理系统数据库设计详解 #### 一、引言 随着信息技术的发展,教育领域的信息化建设也变得日益重要。教务管理系统作为学校信息化建设的重要组成部分,对于提高学校的管理水平和服务质量具有重要意义。本篇...
网上购物系统数据库设计 网上购物系统数据库设计是指在网上购物系统中对数据库的设计和实现。该设计主要涉及到数据库的概念设计、逻辑设计和物理设计三个方面。下面对网上购物系统数据库设计的要点进行详细的介绍。...
数据库设计规范 数据库设计规范是指在设计数据库时需要遵循的规则和标准,以确保数据库的设计是合理、科学和高效的。本文档将详细介绍数据库设计规范的各个方面,包括设计原则、命名规范、设计文件内容等。 设计...
"数据库设计大作业(完整版)" 本资源为大连理工大学软件学院的数据库设计大作业,背景为某一农产品网上商城系统的数据库设计。该系统有居民、销售商两个身份,他们各自所具有的操作描述如下: 业务规则 1. 角色...
"学生选课系统数据库设计" 学生选课系统数据库设计是指根据学生选课系统的需求,设计和实施一个高效、可靠的数据库系统,以满足学生选课的需求。该系统涉及到多个方面,包括可行性分析、系统分析、逻辑设计、数据库...
网上购物商城数据库设计 数据库设计是网上购物商城的核心组件之一,涉及到整个系统的数据存储和管理。以下是网上购物商城数据库设计的相关知识点: 1. 数据库概念设计 在数据库设计中,需要遵守一定的命名规则和...
### 数据库设计开发规范知识点概览 #### 一、数据库设计开发规范概述 《数据库设计开发规范-阿里.pdf》是一份由阿里巴巴云数据库服务部门编制的技术文档,旨在为数据库设计和开发提供一套全面且规范化的指导原则。...
数据库设计(论文+方案)数据库设计(论文+方案)数据库设计(论文+方案)数据库设计(论文+方案)数据库设计(论文+方案)
twitter数据库 twitter数据库设计 微博数据库设计
数据库设计是软件开发中的关键步骤,它包括需求分析、概念模型设计、逻辑模型设计和物理模型设计。在这个过程中,PowerDesigner能帮助我们进行概念数据模型(CDM)和物理数据模型(PDM)的构建。 在"PowerDesigner...
需求分析、概要设计、详细设计和数据库设计模板 需求分析是软件开发的第一步骤,是指确定软件需求的过程。需求分析的目的是确定软件的功能和性能,以便满足用户的需求。需求分析的输出是软件需求规格说明书(SRS)...