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

    技术2022-07-01  74

    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)

     

     


    最新回复(0)