QQ项目数据库的设计与搭建:
1.创建指定名称的数据库:
CREATE DATABASE QQDBPro;
USE QQDBPro;
2.所需的数据表:
用户表QQUser:
存储用户的基本信息
BaseInfo表:存储用户的个人信息
Relation关系表:存储用户之间的关系
具体需求说明:
基本操作步骤: 创建数据库 -> 创建数据表结构 -> 添加约束 -> 建立关系 -> 添加数据
创建QQuser数据表结构:
–用来存储用户注册账号时的填写信息
CREATE TABLE QQUser( --用来存储用户注册账号时的填写信息
QQID INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
QQNickName VARCHAR(20) NOT NULL,
Password VARCHAR(16) NOT NULL,
Online INT, --0:在线、1:离线、2:隐身
LEVEL INT,
LastLoginTime DATETIME
);
添加约束:
ALTER TABLE QQUser
ADD CONSTRAINT CK_Password CHECK(LEN(Password)>=6 AND LEN(Password)<=16)
ALTER TABLE QQUser
ADD CONSTRAINT CK_Online CHECK(Online IN(0,1,2))
创建UserBaseInfo表:
–用户已注册完后的基本信息表
CREATE TABLE UserBaseInfo( --用户已注册完后的基本信息表
QQID INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
NickName VARCHAR(20) NOT NULL,
Gender INT, --0:男 1:女
Age SMALLINT,
Province VARCHAR(20),
City VARCHAR(10),
Address VARCHAR(100),
Phone VARCHAR(20)
);
添加检查约束:
ALTER TABLE UserBaseInfo
ADD CONSTRAINT CK_Gender CHECK(Gender IN (0,1))
ALTER TABLE UserBaseInfo
ADD CONSTRAINT CK_Phone CHECK(LEN(Phone)>=5 AND LEN(Phone)<=13)
ALTER TABLE UserBaseInfo
ADD CONSTRAINT CK_Age CHECK(Age>=1 AND Age<=120)
添加外键约束:
ALTER TABLE UserBaseInfo
ADD CONSTRAINT FK_Age FOREIGN KEY(QQID) REFERENCES QQUser(QQID)
创建Relation表:
CREATE TABLE Relation( --用户之间的关系表
QQID INT NOT NULL, --当前登录用户(A)
RelatedQQID INT NOT NULL, --好友用户(B)
RelationStatus INT --用户关系:0:B是A的好友 1:表示B是A的黑名单
);
添加检查约束:
ALTER TABLE Relation
ADD CONSTRAINT CK_RelationStatus CHECK(RelationStatus IN(0,1))
添加外键约束:
ALTER TABLE Relation
ADD CONSTRAINT FK_QQID FOREIGN KEY(QQID) REFERENCES QQUser(QQID)
ALTER TABLE Relation
ADD CONSTRAINT FK_RelatedQQID FOREIGN KEY(RelatedQQID) REFERENCES QQUser(QQID)
注意:在QQUser和UserBaseInfo表中:
QQID是各自表的主键,但UserBaseInfo表中的QQID又是外键(引用关系的外键)
QQUser表中的QQID(引用关系的主键)
一般的主外键关系:1:N关系
这里的主外键关系:1:1关系