一个长途汽车公司的数据库设计

时间:2023-01-11 19:02:37

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)