码迷,mamicode.com
首页 > 数据库 > 详细

数据库(学习整理)----3--Oracle创建表和设置约束

时间:2016-07-14 21:58:50      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:

  1. BBS论坛表设计
  2. 包含的表:BBSusers(用户表),BBSsection(版块表),BBStopic(主贴表),BBSreply(跟帖表)
  3. 表结构

    1)BBSusers

字段名

字段说明

数据类型

字段约束

备注

U_ID

用户ID

number

主键,非空

非空

UName

用户名

Varchar2(32)

 

非空

UPassword

密码

Varchar2(16)

默认6个8

 

UEmail

email

Varchar2(32)

默认p@p.com,必须有“@”和“.”,“@”必须在“.”前面

 

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:默认p@p.com,必须有“@”和“.”,“@”必须在“.”前面  
       alter table BBSusers
             add constraint CK_BBSusers_UEmail check(UEmail like ‘%@%.%‘);     
       alter table BBSusers 
            modify(UEmail  Varchar2(32) default ‘p@p.com‘);    
       
---生日:非空          
       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) );       

                    

 

数据库(学习整理)----3--Oracle创建表和设置约束

标签:

原文地址:http://www.cnblogs.com/newwind/p/5671592.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!