PHP+MYSQL问答系统中的提问和回答的表怎么设计

PHP+MYSQL问答系统中的提问和回答的表怎么设计,第1张

PHP+MYSQL 的问答系统的设计与实现,问答系统简而言之 就是一个网上交流系统,针对学校这个特定环境,以学生和老师为主体,以实验室信息交流为话题而建立起的一个简单的信息交流平台,并在此基础上进行了扩展,融入实验室预约,信息发布,资料下载等功能模块,使之成为了一个比教完善的实验室网站系统,方便同学和老师及时了解实验室相关信息。

表的设计可以如下:

-- 问题表

CREATE TABLE wenti(

id int, -- 主键,自动+1

title varchar(30),-- 标题

con text, -- 内容

acount int default 0, -- 回答人数 0:未回答

flag int default 0, -- 状态 0:等待回答,1:结束

ctime int, -- 提问时间

uid int -- 提交人id

)

-- 回复表

CREATE TABLE huifu(

id,

con, -- 回复内容

ctime,

uid,

wid int , -- 问题id

hid int , -- 回复id

flag int default 0 -- 状态,0:首次回复(hid=0);1:追问(hid为回复表id);2:再次回复(hid为回复表追问id)。

Log File物理结构

从 ib_logfile0和 ib_logfile1这两个文件的物理结构可以看出,在Log Header部分还是有些许差异的, ib_logfile0会多一些额外的信息,主要是checkpoint信息。

并且每个Block的单位是512字节,对应到磁盘每个扇区也是512字节,因此redo log写磁盘是原子写,保证能够写成功,而不像index page一样需要double write来保证安全写入。

我们依次从上到下来看每个Block的结构

Log File Header Block

Log Goup ID,可能会配置多个redo组,每个组对应一个id,当前都是0,占用4字节

Start LSN,这个redo log文件开始日志的lsn,占用8字节

Log File Number,总是为0,占用4字节

Created By,备份程序所占用的字节数,占用32字节

另外在ib_logfile0中会有两个checkpoint block,分别是 LOG_CHECKPOINT_1/ LOG_CHECKPOINT_2,两个记录InnoDB Checkpoint信息的字段,分别从文件头的第二个和第四个block开始记录,并且只在每组log的第一个文件中存在,组内其他文件虽然没有checkpoint相关信息,但是也会预留相应的空间出来。这里为什么有两个checkpoint的呢?原因是设计为交替写入,避免因为介质失败而导致无法找到可用的checkpoint的情况。

Log blocks

请点击输入图片描述

log block结构分为日志头段、日志记录、日志尾部

Block Header,占用12字节

Data部分

Block tailer,占用4字节

Block Header

这个部分是每个Block的头部,主要记录的块的信息

Block Number,表示这是第几个block,占用4字节,是通过LSN计算得来的,占用4字节

Block data len,表示该block中有多少字节已经被使用了,占用2字节

First Rec offet,表示该block中作为第一个新的mtr开始的偏移量,占用2字节

Checkpoint number,表示该log block最后被写入时的检查点的值,占用4字节

一、不定项选择题(共40题,每小题2.5分,总分100分)1.数据库管理系统的发展历经了如下那些模型阶段(ACDE)A.层次模型B.结构模型C.关系模型D.网状模型E.对象模型2.关系型数据库的核心单元是(B)A.对象B.表C.行D.列3.对于关系型数据库来说,表之间存在下面那些关系(ABC)A.一对一关系B.一对多关系C.多对多关系D.继承关系4.在SQL中,下面对于数据定义语言(DDL)描述正确的是(D)。A.DDL关心的是数据库中的数据B.完成数据的增、删、改、查 *** 作C.控制对数据库的访问D.定义数据库的结构5.MySQL是一种(C)数据库管理系统。A.层次型B.网络型C.关系型D.对象型6.SQL中,下列 *** 作有语法错误的是(B)A.AGEISNOTNULLB.NOT(AGEISNULL)C.SNAME=‘王五’D.SNAME=‘王%’7.SQL中,下列关于创建、管理数据库的 *** 作语句不正确的是(CDE)A.CREATEDATABASEInstantB.USEInstantC.NEWDATABASEInstantD.ConnectionInstantE.DeleteDATEBASEInstant8.在MySQL中,不存在的数据类型是(F)。A.INTB.TEXTC.DECIMALD.VARCHARE.DATETIMEF.VARCHAR29.在MySQL中,下列关于创建数据库表的描述正确的是(C)。A.在创建表时必须设定列的约束B.在删除表的时候通过外键约束连接在一起的表会被一同删除C.在创建表时必须设置列类型D.通过CREATETABLEnew_tSELECT*FROMold_t复制表的同时,表的约束能够一起被复制到新表中10.根据数据完整性实施的方法,可以将其分为(ACDF)A.实体完整性B.表完整性C.域完整性D.引用完整性E.记录完整性F.用户自定义完整性11.下面关于域完整性的方法,不正确的是(A)。A.主键约束B.外键约束C.检查约束D.非空约束E.默认值12.下面关于创建和管理索引正确的描述是(C)。A.创建索引是为了便于全表扫描B.索引会加快DELETE、UPDATE和INSERT语句的执行速度C.索引被用于快速找到想要的记录D.大量使用索引可以提高数据库的整体性能13.SQL中,“AGEIN(20,22)”的语义是(D)。A.AGE=20B.AGE20C.AGE=20ANDAGE=22D.AGE=20ORAGE=2214.有一个关系:学生(学号,姓名,系别),规定学号的值域是8个数字组成的字符串,这一规则属于(C)A.实体完整性约束B.参照完整性约束C.用户自定义完整性约束D.关键字完整性约束15.下面SQL是来源于考试成绩表t_exam:学号stuId、科目编号subId、成绩score,考试日期:ex_date。有以下sql,它表示的意思是:(B)Selectstu_id,subId,count(*)asxFromt_examWhereex_date=’2008-08-08’Groupstu_id,subIdHavingcount(*)>1OrderbyxdescA.找出’2008-08-08’这天某科考试2次及以上的学生记录B.找出’2008-08-08’这天,某科考试2次及以上的学生记录,考试次数多的放在前面C.找出’2008-08-08’这天,某科考试2次及以上的学生记录,考试次数少的放在前面D.根据学号和学科分组,找出每个人考试科数,最后考试次数多的放在前面16.EMP表如下所示,下面哪些SQL语句的返回值为3:(BD)EMP雇员号雇员名部门号工资 001 张山 02 2000010 王宏达 011200056 马林生 021000101 赵敏04A.selectcount(*)fromempB.selectcount(distinct部门号)fromempC.selectcount(*)fromempgroupby雇员号D.selectcount(工资)fromemp17.下面那一项不是SELECT语句对数据的 *** 作:(D)A.投影B.联接C.并D.级联18.下面关于SQL数据查询 *** 作描述正确的有:(ABD)A.投影 *** 作是选择对表中的哪些列进行查询 *** 作B.使用DISTINCT关键字可以过滤查询中重复的记录C.在模糊查询中,通配符“%”表示匹配单个字符,而“_”表示匹配零个或多个字符D.在MySQL中使用LIMIT关键字限制从数据库中返回记录的行数19.在SQL语言中,条件“BETWEEN20AND30”表示年龄在20到30之间,且(A)。A.包括20岁和30岁B.不包括20岁和30岁C.包括20岁,不包括30岁D.不包括20岁,包括30岁20.SQL语言中,删除EMP表中全部数据的命令正确的是(C)。A.delete*fromempB.droptableempC.truncatetableempD.没有正确答案21.有关索引的说法错误的是(AD)A.索引的目的是为增加数据 *** 作的速度B.索引是数据库内部使用的对象C.索引建立得太多,会降低数据增加删除修改速度D.只能为一个字段建立索引22.下列哪个关键字在Select语句中表示所有列(A)A.*B.ALLC.DESCD.DISTINCT23.在表中设置外键实现的是哪一类数据完整性(B)A.实体完整性B.引用完整性C.用户定义的完整性D.实体完整性、引用完整性和用户定义的完整性24.下面正确表示Employees表中有多少非NULL的Region列的SQL语句是(B)A.SELECTcount(*)fromEmployeesB.SELECTcount(ALLRegion)fromEmployeesC.SELECTcount(DistinctRegion)fromEmployeesD.SELECTsum(ALLRegion)fromEmployees25.下面可以通过聚合函数的结果来过滤查询结果集的SQL子句是(C)A.WHERE子句B.GROUPBY子句C.HAVING子句D.ORDERBY子句26.t_score(stu_id,sub_id,score),即成绩表(学号,科目编号,成绩)。学生如果某科没有考试,则该科成绩录入null。能够获取各位学生的平均成绩的选项是(A)A.selectavg(nvl(socre,0))fromscoregroupbystu_idB.selectstu_id,avg(sorce)fromscoreC.selectstu_id,avg(score)fromscoreD.selectstu_id,sum(score)/count(score)fromscore27.若要求查找S表中,姓名的第一个字为'王'的学生学号和姓名。下面列出的SQL语句中,哪个是正确的(B)A.SELECTSno,SNAMEFROMSWHERESNAME=′王%′B.SELECTSno,SNAMEFROMSWHERESNAMELIKE′王%′C.SELECTSno,SNAMEFROMSWHERESNAMELIKE′王_′D.全部28.若要求“查询选修了3门以上课程的学生的学生号”,正确的SQL语句是(B)A.SELECTSnoFROMSCGROUPBYSnoWHERECOUNT(*)>3B.SELECTSnoFROMSCGROUPBYSnoHAVING(COUNT(*)>3)C.SELECTSnoFROMSCORDERBYSnoWHERECOUNT(*)>3D.SELECTSnoFROMSCORDERBYSnoHAVINGCOUNT(*)>=329.对下面的查询语句描述正确的是(D)SelectStudentID,Name,(selectcount(*)fromStudentExamwhereStudentExam.StudentID=Student.StudentID)asExamsTakenfromStudentorderbyExamsTakendescA.从Student表中查找StudentID和Name,并按照升序排列B.从Student表中查找StudentID和Name,并按照降序排列C.从Student表中查找StudentID、Name和考试次数D.从Student表中查找StudentID、Name,并从StudentExam表中查找与StudentID一致的学生考试次数,并按照降序排列30.下面题基于学生-课程数据库中的三个基本表:学生信息表:s(sno,sname,sex,age,dept)主键为sno课程信息表:c(cno,cname,teacher)主键为cno学生选课信息表:sc(sno,cno,grade)主键为(sno,cno)“从学生选课信息表中找出无成绩的学生信息”的SQL语句是(Cd)A.SELECT*FROMscWHEREgrade=NULLB.SELECT*FROMscWHEREgradeIS‘’C.SELECT*FROMscWHEREgradeISNULLD.SELECT*FROMscWHEREgrade=‘’31.当子查询返回多行时,可以采用的解决法是(C)。A.使用聚合函数B.Where条件判断C.使用IN运算符D.使用Groupby进行分组32.下面关于在子查询中使用运算符描述不正确的是(D)。A.使用IN运算符用于查找字段值属于某一组值的行B.使用Exists运算符用于测试子查询是否返回行,如果返回其值就为真C.使用ALL运算符用于测试子查询结果集的所有行是否满足指定的条件D.使用Any运算符用于测试子查询结果集中的一行或多行不满足指定的条件33.下面关于组合查询描述不正确的是(D)。A.从一个表中获取的数据必须和其它表中的数据具有相同的列数B.两个表中相对应的列必须具有相同的数据类型C.UNION的结果集列名与第一个SELECT语句的结果集中的列名相同D.UNION的结果集列名与第二个SELECT语句的结果集中的列名相同E.UNIONALL运算符返回每个数据集的所有成员34.下面关于联接的描述正确的是(A)。A.内联接使用比较运算符根据每个表共有的列值来匹配两个表中的行B.左外联接结果集包含从右边的表返回的所有行C.右外联接结果集包含从左边的表返回的所有行D.全外联接返回左表和右表中的所有匹配的行35.下面关于数据库设计过程正确的顺序描述是(C)。A.需求收集和分析、逻辑设计、物理设计、概念设计B.概念设计、需求收集和分析、逻辑设计、物理设计C.需求收集和分析、概念设计、逻辑设计、物理设计D.需求收集和分析、概念设计、物理设计、逻辑设计36.ER图属于下面哪一种数据库设计模型(B)。A.物理数据模型B.概念数据模型C.逻辑数据模型D.需求模型37.非主键必须完全依赖于主键列,这属于下列范式的内容(BC)A.1NFB.2NFC.3NFD.都没有的38.如果一个字段的数据必须来源另一个表的主键,那么要在这个字段上建立(B)。A.PK(主键)B.FK(外键)C.UK(唯一键)D.复合主键39.根据三个范式的定义,下面哪个选项的设计是正确的(C)职工编号姓名工种车间车间主任1001李宁车工一车间周杰1002王海铣工一车间周杰1003赵亮钳工二车间吴明1001李宁钳工二车间吴明A.员工表、工种表、车间表B.员工表、工种表、车间表、车间主任表C.员工表、工种表、车间表、员工工种表、员工车间表D.以上设计均不正确40.下列说法中,哪些是正确的(BD)A.RDBMS是数据库管理系统的简称B.各行记录都不能重复,是第二范式要求的C.在数据库设计中一定要满足第三范式D.索引越多,查询越快,数据更新越慢


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/8330994.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存