- BBS论坛表设计
- 包含的表:BBSusers(用户表),BBSsection(版块表),BBStopic(主贴表),BBSreply(跟帖表)
- 表结构
1)BBSusers
字段名 |
字段说明 |
数据类型 |
字段约束 |
备注 |
U_ID |
用户ID |
number |
主键,非空 |
非空 |
UName |
用户名 |
Varchar2(32) |
非空 |
|
UPassword |
密码 |
Varchar2(16) |
默认6个8 |
|
UEmail |
|
Varchar2(32) |
默认[email protected],必须有“@”和“.”,“@”必须在“.”前面 |
|
UBirthday |
生日 |
Date |
非空 |
|
USex |
性别 |
Char(2) |
默认’男’ |
非空 |
UClass |
用户等级 |
Number |
值只能是1,2,3中任意一个,默认1 |
|
UStatement |
备注 |
Varchar2(255) |
||
URegDate |
注册时间 |
Date |
非空 |
|
UState |
用户状态 |
Number |
值只能是1,2,3,4中任意一个 |
非空 |
UPoint |
积分 |
Number |
不能为负。默认20 |
2)BBSsection
字段名 |
字段说明 |
数据类型 |
字段约束 |
备注 |
S_ID |
版块ID |
Number |
主键,非空 |
非空 |
SName |
版块名称 |
Varchar2(32) |
非空 |
|
SMasterID |
用户ID |
Number |
外键,关联用户表主键 |
非空 |
SStatement |
备注 |
Varchar2(255) |
||
SClickCount |
点击次数 |
Number |
不能为负 |
非空 |
STopicCount |
主贴数目 |
Number |
不能为负。默认为0 |
3)BBStopic
字段名 |
字段说明 |
数据类型 |
字段约束 |
备注 |
TID |
主贴ID |
Number |
主键,非空 |
非空 |
TNumber |
主贴标号 |
Varchar2(32) |
必须以”t”开头的8个字符 |
非空 |
TSID |
版块ID |
Number |
外键,关联版块ID |
非空 |
TUID |
用户ID |
Number |
外键,关联用户ID |
非空 |
TTopic |
主贴标题 |
Varchar2(255) |
非空 |
|
TContents |
主贴正文 |
Varchar2(2000) |
非空 |
|
TTime |
发帖时间 |
Date |
非空 |
|
TClickCount |
点击数量 |
Number |
不能为负,默认0 |
|
TFlag |
主贴状态 |
Number |
只能为1,2,3 |
非空 |
TLastCLickT |
最后点击时间 |
Date |
非空 |
4)BBSreply
字段名 |
字段说明 |
数据类型 |
字段约束 |
备注 |
RID |
跟帖表主键 |
Number |
主键,非空 |
非空 |
RNumber |
跟贴标号 |
Varchar2(32) |
必须以”r”开头的8个字符 |
非空 |
RTID |
主贴ID |
Number |
外键,关联主贴ID |
非空 |
RSID |
版块ID |
Number |
外键,关联版块ID |
非空 |
RUID |
用户ID |
Number |
外键,关联用户ID |
非空 |
RTopic |
跟帖标题 |
Varchar2(255) |
非空 |
|
RContents |
跟帖正文 |
Varchar2(2000) |
非空 |
|
RTime |
发帖时间 |
Date |
非空 |
|
RClickCount |
点击数量 |
Number |
不能为负,默认0 |
2、Oracle建表和设置约束:
-----------------------------【1】---------------------------------------------- ------创建:用户表 create table BBSusers ( U_ID number, -----用户ID UName Varchar2(32), -----用户名 UPassword Varchar2(16),-----密码 UEmail Varchar2(32), -----email UBirthday Date, -----生日 USex Char(2), -----性别 UClass Number, -----用户等级 UStatement Varchar2(255),---备注 URegDate Date, -----注册时间 UState Number, -----用户状态 UPoint Number -----积分 ); ------创建:表约束 ----(1)主键,非空 alter table BBSusers add constraint PK_BBSusers_uid primary key(U_ID); alter table BBSusers modify(U_ID number not null); ---用户名 :非空 alter table BBSusers modify(UName number not null); ---密码:默认6个8 alter table BBSusers modify(UPassword Varchar2(16) default ‘888888‘); ---email:默认[email protected],必须有“@”和“.”,“@”必须在“.”前面 alter table BBSusers add constraint CK_BBSusers_UEmail check(UEmail like ‘%@%.%‘); alter table BBSusers modify(UEmail Varchar2(32) default ‘[email protected]‘); ---生日:非空 alter table BBSusers modify(UBirthday number not null); ---性别:默认’男’ 非空 alter table BBSusers modify(USex Char(2) default ‘男‘ not null); ---用户等级:值只能是1,2,3中任意一个,默认1 alter table BBSusers modify(UClass number default 1 check(UClass in(1,2,3))); ---注册时间:非空 alter table BBSusers modify(URegDate Date not null); ---用户状态:值只能是1,2,3,4中任意一个 非空 alter table BBSusers modify(UState number check(UState in(1,2,3,4)) not null); ---积分:不能为负。默认20 alter table BBSusers modify(UPoint number default 20 check(UPoint>0)); --------------------------------------------------------------------------- -----------------------------【2】---------------------------------------------- -----创建:版块表 create table BBSsection ( S_ID number, -----版块ID(主键) SName Varchar2(32), -----版块名称 SMasterID Number, -----用户ID(外键) SStatement Varchar2(255),-----备注 SClickCount Number, -----点击次数 STopicCount Number -----主贴数目 ); -----设置:约束 -----(1):版块ID 主键,非空 alter table BBSsection add constraint PK_BBSsection_sid primary key(S_ID); alter table BBSsection modify(S_ID number not null); -----版块名称:非空 alter table BBSsection modify(SName number not null); -----用户ID:外键,关联用户表主键 非空 alter table BBSsection add constraint FK_BBSsection_SMasterID foreign key(SMasterID) references BBSusers(U_ID); alter table BBSsection modify(SMasterID number not null); -----点击次数:不能为负 非空 alter table BBSsection modify(SClickCount check(SClickCount>0) not null); ----主贴数目:不能为负。默认为0 alter table BBSsection modify(STopicCount default 0 check(STopicCount>0)); --------------------------------------------------------------------------- -----------------------------【3】---------------------------------------------- -----创建:主贴表 create table BBStopic ( TID number, -----主贴ID(主键) TNumber Varchar2(32), -----主贴标号 TSID Number, -----版块ID(外键) TUID Number, -----用户ID(外键) TTopic Varchar2(255), -----主贴标题 TContents Varchar2(2000),-----主贴正文 TTime Date, -----发帖时间 TClickCount Number, -----点击数量 TFlag Number, -----主贴状态 TLastCLickT Date -----最后点击时间 ); ------设置:约束 -----(1)主贴ID:主键,非空 alter table BBStopic add constraint PK_BBStopic_sid primary key(TID); alter table BBStopic modify(TID number not null); -----主贴标号:必须以”t”开头的8个字符 非空 alter table BBStopic add constraint CK_BBStopic_TNumber check(TNumber like ‘t%‘ and length(TNumber)=8); alter table BBStopic modify(TNumber not null); -----版块ID:外键,关联版块ID 非空 alter table BBStopic add constraint FK_BBStopic_TSID foreign key(TSID) references BBSsection(S_ID); alter table BBStopic modify(TSID number not null); -----用户ID:外键,关联用户ID 非空 alter table BBStopic add constraint FK_BBStopic_TUID foreign key(TUID) references BBSusers(U_ID); alter table BBStopic modify(TUID number not null); -----主贴标题:非空 alter table BBStopic modify(TTopic Varchar2(255) not null); -----主贴正文:非空 alter table BBStopic modify(TContents Varchar2(2000) not null); -----发帖时间:非空 alter table BBStopic modify(TTime Date not null); -----点击数量:不能为负,默认0 alter table BBStopic modify(TClickCount number default 0 check(TClickCount>0) ); ------主贴状态:只能为1,2,3 非空 alter table BBStopic modify(TFlag number check(TFlag in(1,2,3)) not null ); -----最后点击时间:非空 alter table BBStopic modify(TLastCLickT Date not null); --------------------------------------------------------------------------- -----------------------------【4】---------------------------------------------- -----创建:跟帖表 create table BBSreply ( RID number, -----跟帖表主键(主键) RNumber Varchar2(32), -----跟贴标号 RTID Number, -----主贴ID(外键) RSID Number, -----版块ID(外键) RUID Number, -----用户ID(外键) RTopic Varchar2(255), -----跟帖标题 RContents Varchar2(2000),-----跟帖正文 RTime Date, -----发帖时间 RClickCount Number -----点击数量 ); ------设置:约束 -----(1)跟帖表主键:跟帖表主键 alter table BBSreply add constraint PK_BBSreply_RID primary key(RID); alter table BBSreply modify(RID number not null); -----跟贴标号:必须以”r”开头的8个字符 非空 alter table BBSreply add constraint CK_BBSreply_RNumber check(RNumber like ‘r%‘ and length(RNumber)=8); alter table BBSreply modify(RNumber not null); -----主贴ID:外键,关联主贴ID 非空 alter table BBSreply add constraint FK_BBSreply_RTID foreign key(RTID) references BBStopic(TID); alter table BBSreply modify(RTID number not null); -----版块ID:外键,关联版块ID 非空 alter table BBSreply add constraint FK_BBSreply_RSID foreign key(RSID) references BBSsection(S_ID); alter table BBSreply modify(RSID number not null); -----用户ID:外键,关联用户ID 非空 alter table BBSreply add constraint FK_BBSreply_RUID foreign key(RUID) references BBSusers(U_ID); alter table BBSreply modify(RUID number not null); -----跟帖标题:非空 alter table BBSreply modify(RTopic number not null); -----跟帖正文:非空 alter table BBSreply modify(RContents number not null); -----发帖时间:非空 alter table BBSreply modify(RTime number not null); -----点击数量:不能为负,默认0 alter table BBSreply modify(RClickCount number default 0 check(RClickCount>0) );
时间: 2024-10-26 17:40:12