drop table Article;
drop table ArticleSort;
drop table bus;
drop table bus_type;
drop table bus_photo;
drop table bus_task;
drop table line_order;
drop table units;
drop table line;
drop table users;
drop table lint_units;
/*
旅行社、车队:单位表
车主身份确定:users.unitsid=null and bus.userid=users.userid)私家车主既没有单位的车辆编辑人;(units.unitsid=null)私家车;(users.unitsid=users.unitsid and units.type=0)旅行社自备车;(bus.unitsid=units.unitsid and units.type=1)车队车
个人:users.unitsid=null
*/
create table units(
unitsid int identity(1,1) primary key,
name varchar(60) not null unique,
type int not null,--0-旅行社 1-车队
city_sz_code char(6) not null,--City.sz_code省,不见外键,全国通用地址库
address nvarchar(100),--详细地址(县区以下)
phone varchar(100),--电话
description varchar(1000)
);
create table users(--单位表
unitsid int,
userid int identity(1,1) primary key,
username varchar(20) not null unique,--用户名
password varchar(20) not null,--密码
nickname varchar(40) not null,--昵称
name varchar(50),--真实姓名
sex varchar(2) not null,--性别:男/女
phone varchar(100),--电话
mobile varchar(30) not null,--手机
email varchar(100),
qq varchar(20),
integral int default 10,--积分
state int default 1,--审核状态 0-锁定 1-正常
website varchar(100),--站点:旅行社、车队
indate datetime default getdate(),--注册时间
latest_login_time datetime default getdate(),--最近一次登录时间
login_times int default 1,--登录次数
foreign key(unitsid) references units(unitsid)
);
--文章
create table ArticleSort(--文章分类
sortid int identity(1,1) primary key,
name nvarchar(50) not null unique--分类名
);
create table Article(
sortid int not null,--分类id
articleid int identity(1,1) primary key,
title nvarchar(100) not null,--标题
ordernumber int default(0),--顺序号,-1置顶
content varchar(MAX) not null,--内容
state int default 0,--审核状态0-未通过 1-通过
indate datetime default getdate(),--编辑时间
userid int not null,--编辑人id,外键
foreign key(sortid) references ArticleSort(sortid),
foreign key(userid) references users(userid)
);
create table bus_type(
typeid int identity(1,1) primary key,
name nvarchar(20) not null unique,
unit nvarchar(10) not null,--计量单位:座位数(客车)、吨位(货车)、立方(箱货、容器类(列如液体的))
);
--车辆
create table bus(--车辆表:单位excel导入,私家车前台自己添加
busid int identity(1,1) primary key,
bus_number varchar(20) not null unique,--车牌号
brand nvarchar(10) not null,--品牌
rype_number varchar(30) not null,--型号
color nvarchar(10) not null,--颜色
fuel_type nvarchar(10) not null,--然料类型:大巴主要为柴油
description nvarchar(300),--车辆描述
typeid int not null,--车辆类型id,外键
load_capacity int not null,--承载量,对应bus_type.unit
phone varchar(100),--电话
mobile varchar(30) not null,--手机
cost int,--租用费用:元/天
buy_time datetime not null,--购买时间:年月
uintsid int, --隶属车队
--车队车从units表复制一下两个字段,以方便查询
city_sz_code char(6) not null,--City.sz_code省,不见外键,全国通用地址库
address nvarchar(100),--详细地址(县区以下)
userid int not null,--编辑人id:unitsid为null,则为车主id(车主身份确定:users,unitsid=null and bus.userid=users.userid);unitsid不为null则为车队此条信息编辑人id
foreign key(typeid) references bus_type(typeid),
foreign key(userid) references users(userid)
);
create table bus_photo(--车辆图片表:一个车有多张图片
busid int not null,--车辆id,外键
photoid int identity(1,1) primary key,--主键
url varchar(100) not null unique,--路径
title varchar(100) not null,--标题
description nvarchar(400),--描述
foreign key(busid) references bus(busid)
);
create table line(--旅行线路
unitsid int not null,--线路创办单位(一般为旅行社,车队回程收集客源亦可)id
lineid int identity(1,1) primary key,
start_place nvarchar(60) not null,--始发地
start_time datetime not null,--始发时间
end_place nvarchar(60)not null,--到达地
end_time datetime not null,--到达地点
person_limit int default 0,--default(默认值)人数限制
cost int not null,--费用(元/月)
description varchar(2048),--行程说明
scenery_spot_introduce varchar(2048),--景点介绍
state int default 0,--状态:0-计划 1-报名中 2-报名结束 3-已发车 4-结束(本次发车已会) 5-作废(旅游景点意外或人数不够等原因)
userid int not null,--编辑人
foreign key(userid) references users(userid)
);
create table line_units(--线路-旅行社关系(多对多)
luid int identity(1,1) primary key,
lineid int not null,--路线id,外键
unitsid int not null,--单位id,外键
userid int not null,--编辑人id,外键
foreign key(lineid) references line(lineid),
foreign key(unitsid) references units(unitsid),
foreign key(userid) references users(userid)
);
create table bus_task(--车辆任务表【车队表】
busid int not null,--外键,可以先定任务,在订车
taskid int identity(1,1) primary key,
lineid int,--旅行线路id,null则(1)-(4)不可空,否则(1)-(4)为空
start_place nvarchar(60),--(1)始发地
start_time datetime,--(2)始发时间
end_place nvarchar(60),--(3)到达地
end_time datetime,--(4)到达地点
sate int default 0,--任务状态:0-计划(任务可修改或) 1-签单(任务确定不可修改) 2-执行中(实际中会有延期) 3-执行结束 4-废除
cost int,--任务费用(一些公益性的是没有费用的)
cost_description varchar(2048),--任务费用说明
host varchar(100),--用车单位或任命
host_mobile varchar(30) not null,--用车单位或人手机(11位,可以收发短信)
bill_position varchar(100),-- 凭证票据存放位置或合同号(及合同存放位置)
userid int,--签单人id(即将任务由计划改为签单状态)
userid2 int,--编辑人id,游客申请用车位null
foreign key(userid) references users(userid)
);
create table line_order(--旅游(线路)订单表【旅行社用】
lineid int not null,--外键
orderid int identity(1,1) primary key,
name varchar(30) not null,--报名人姓名
mobile varchar(30) not null,--报名手机
indate datetime default getdate(),--报名时间
indate2 datetime,--认证时间
userid int,--(旅行社认证)认证人id:游客—null,然后旅行社工作人员认证;旅行社工作人员下的订单不用核实,则为工作人员id
cost int,--协议价格,一般低于报价
imprest int,--预付款
pay_mode int default 0,--付款方式:0-现金 1-银行转账 2-支票 3-电子支付
pay_receipt varchar(30),--付款凭证(号)
foreign key(lineid) references line(lineid),
foreign key(userid) references users(userid)