(一)、数据库设计文档概述
本文档为北大青鸟ACCP软件工程师培训无锡培训中心 SI50B 班学员,第一学期毕业设计项目(《销售管理系统》)的数据库设计说明书,具体描述《销售管理系统》的数据库的设计,用于指导该系统在数据库存储各方面的内容,作为系统代码设计的基准文档。
(二)、项目简要介绍
项目目标软件系统名称:销售管理系统
项目提出:自命题
项目目标:利用计算机技术和信息技术实现销售管理的信息化,达到客户管理、合同管理、业务管理的规范有序、信息查阅快速准确、事务处理方便高效的要求,及时跟踪企业营销目标并适时进行结构化分析,为营销策略的修正以及新的营销策略的制定提供依据,通过对提高营销效率与降低营销成本的有效支持,从而改善企业宏观运营,提高企业的经济效益。
系统模式:采用客户端/服务器模式
系统开发环境:Visual Basic 6.0
数据库管理系统:Microsoft SQL Server 2000
软件开发者:北大青鸟无锡培训中心 SI50B 班学员王章圣
软件应用范围:中小型企业(生产类)
(三)、参考资料:
A、北大青鸟第一学期教材;
B、《基于软件开发项目的毕业设计》;
(C、《销售管理系统》需求说明书)
D、项目指导教师提供的毕业设计案例
(一)本数据库的应用软件及其与数据库的接口
数据库软件:Microsoft SQL Server 2000
系统要求建立的数据库名称:Sales
使用该数据库的应用软件:销售管理系统
该应用软件在Visual Basic 6.0编程环境下设计,采用Visual Basic 6.0基于Active Data Objects的数据库访问接口技术,建立与数据库的通讯连接、执行T-SQL。应用程序对数据库的操作,在通过执行T-SQL查询语句生成的结果集上执行。
(二)数据库管理系统
Microsoft® SQL Server? 2000 扩展了 Microsoft SQL Server 7.0 版的性能、可靠性、质量和易用性。Microsoft SQL Server 2000 增加了几种新的功能,由此成为大规模联机事务处理 (OLTP)、数据仓库和电子商务应用程序的优秀数据库平台。本数据库采取SQL Server 2000作为系统平台。以下是需要使用到SQL Server 2000的几个组件,包括:
A、企业管理器:提供了数据管理和数据库操作的集成平台;
B、查询分析器:T-SQL调试、优化、性能检测的工具;
C、事件探查器:提供了对SQL Server执行操作的检测,并以T-SQL的形式记录;
D、服务管理器:提供SQL Server停止、启动的控制工具;
此外,还包括可能会使用到的数据导入和导出工具,为数据库提供数据的输入。
(一)表结构设计
本数据库包括五类二十三张数据表,清单如下:
类别 | 表索引 | 表名 | 说明 |
产品类 | 表一 | Product | 存储公司所有产品目录 |
表二 | product_type | 产品类类别:对表一的产品进行分类,并以其进行约束(字典库) | |
表三 | Store | 产品出/入库:指检验合同的成品/退货产品,生产过程中的待检品、半成品以及材料等不纳入本系统 | |
表四 | store_reason | 出/入库理由:字典库 | |
表五 | product_ qulity | 产品质量:字典库 | |
表六 | product_Periods | 产品生产周期:主要用于合同评审(字典库) | |
表七 | product_profit | 产品利润:通过表九与表一跟踪签约产品的利润实现情况 | |
客户类 | 表八 | client | 客户表:一般指企业(即法人) |
合 同 - 订单类 | 表九 | Orders | 订单:即将合同细化的产品订单 |
表十 | Contract | 合同:即以合同为单位的订单,也可称之为销售记录 | |
表十一 | contract_mode | 履行方式:字典库 | |
表十二 | contract_cancel | 已废止/取消的合同:在本库中起字典库作用 | |
表十三 | contract_talk | 合同评估:字典库 | |
表十四 | Suddenness | 合同意外处置:当不能完全按照合同的约定履行时,需在此登记,以便对合同与客户进行有效的管理 | |
表十五 | deal_mode | 意外处置方式:字典库 | |
表十六 | contract_profit | 合同利润:以合同为统计单位,并扣除各种折扣 | |
表十七 | contract_verify | 合同评审记录:主体部分 | |
表十八 | contract_perverify | 合同评审记录:产品细分清单 | |
营销目标与 营销人员 | 表十九 | Target | 销售目标:企业整体的营销目标,并按产品分解 |
表二十 | Seller | 销售员:字典库 | |
表二一 | Seller_target | 个人目标分解:按产品将企业营销目标分解到业务员,以便跟踪个人业绩 | |
系统 用户 | 表二二 | userlist | 用户表:用于数据库的操作人员,业务员、客户可通过其口令登录查询 |
表二三 | Operate_recorders | 用户操作记录表:写入操作员针对数据库的任何更改,建立责任制,同时也可以用作对操作员考核的原始依据 |
以下是各数据表的具体结构及约束等说明:
表一:Product(产品)
字段 | 类型(长度) | 约束 | 说明 | |
产品编号 | product_id | Char(10) | 主键 |
|
产品名称 | product_name | Char(20) | 非空 |
|
产品大类 | product_type | tinyint | 外键 | 引用表二:type_id |
单位成本 | product_cost | smallmoney | 无 | 根据用户类型决定可否查看 |
备 注 | product_menu | text | 无 |
|
相关表:订单、库存(出/入库)、销售计划、销售记录、产品利润、产品生产周期(编号) 说 明:所有字段均由用户输入(选择产品大类,用户输入不存在的类别时提示添加。) (严格地讲,单位成本是变动的,最好单独成表并标注日期,以保存不同时期的“版本”,同时,还需建立报价表,此二表可考虑合并,为减轻项目负担,没有分开。) |
表二:product_type(产品大类)
字段 | 类型(长度) | 约束 | 说明 | |
序号 | type_id | tinyint | 标识列,主键 |
|
产品大类 | type_name | Char(20) | 非空 | 将数据写入产品输入界面的组合框 |
相关表:产品(对其实施约束) 说 明:type_name由用户输入(一般通过修改产品时提示添加) |
表三:Store(产品出/入库)
字段 | 类型(长度) | 约束 | 说明 | |
序 号 | store_id | int | 标识列,主键 |
|
产品编号 | product_id | char(10) | 外键 | 引用表一:product_id |
产品批号 | product_code | char(10) | 非空 |
|
登记方式 | enter _statu | bit | 非空 | “1”为入存,“0”为出库 |
登记数量 | chang_number | int | 非空/正数 | 可与前项合并,以正负区别,但考虑到统计需要,分开。 |
质量等级 | store_qulity | tinyint | 外键 | 引用表四:qulity_type |
出/入库日期 | store_date | datetime | 非空 |
|
来源/去向 | store_frorto | char(20) | 非空 |
|
出/入库理由 | store_reason | char(20) | 非空 | 参引表 :reason_type |
库存数量 | store_number | int | 非空/非负 |
|
相关表:产品(产品编号)、产品质量 说 明:除“序号”、“库存状态”、“库存数量”外均由用户输入(选择日期、理由、质量等级);reason_id不作为本表的外键,从而允许用户输入其他原因,并提示用户规范该字典库(“库存数量”在用户登记时由系统计算并自动填写)。 |
表四:product_qulity(产品质量)
字段 | 类型(长度) | 约束 | 说明 | |
序号 | qulity_id | tinyint | 标识列,主键 | 有关属性与产品类别表相似。 |
质量等级 | qulity_type | Char(6) | 非空 | |
相关表:产品出/入库、定单 |
表五:store_reason(出/入库理由)
字段 | 类型(长度) | 约束 | 说明 | |
序号 | reason_id | tinyint | 标识列,主键 | 相关表:产品出/入库 有关属性与产品类别表相似。 |
理由描述 | reason_type | Char(20) | 非空 |
表六:product_Periods(产品生产周期)
字段 | 类型(长度) | 约束 | 说明 | |
序 号 | periods_id | Tinyint | 标识列,主键 |
|
产 品 编 号 | product_id | Char(10) | 外键 |
|
数 量 | product_number | Int | 非空/正数 |
|
一般生产周期 | periods | smallint | 非空/正数 | 以天计 |
相关表:产品(编号) 说 明:均由用户输入,所有在产品都必须在此登记,并作为在产的标志。 |
表七:product_profit(产品利润)
字段 | 类型(长度) | 约束 | 说明 | |
产品编号 | product_id | Char(10) | 外键 | 主键 |
合同编号 | contract_id | Char(10) | 外键 | |
利 润 额 | profit | Money | 无 |
|
利 润 率 | profit_margin | decimal | 无 |
|
相关表:产品(产品编号)、合同(合同编号) 说 明:根据订单表作相应更新,由系统建立,便于统计。 |
表八:client(客户)
字段 | 类型(长度) | 约束 | 说明 | |
客户编号 | client_id | Char(8) | 主键 |
|
客户名 | client_name | Char(30) | 非空 |
|
联系人 | client_person | Char(10) | 非空 | 或称代表人 |
联系方式 | client_tel | Char(15) | 非空 |
|
住址 | client_ad | Varchar(50) | 非空 |
|
相关表:合同(客户编号)(通过合同表与产品表建立间接联系,查看客户感兴趣的产品) 说 明:全部由用户输入(客户编号可考虑由系统建立) |
表九:Orders(订单)
字段 | 类型(长度) | 约束 | 说明 | |
合同编号 | product_id | Char(10) | 外键 | 主键 |
产品编号 | contract_id | Char(10) | 外键 | |
数 量 | sells_number | int | 非空/正数 |
|
质 量 | contract_ qulity | tinyint | 外键 | 引用表四:qulity_type |
单 价 | per_price | smallmoney | 非空/正数 |
|
相关表:产品(产品编号)、合同(合同编号)、产品质量 说 明:均由用户输入(多数情况下,与合同表一同更新) |
表十:Contract(合同)
字段 | 类型(长度) | 约束 | 说明 | |
合同编号 | contract_id | Char(10) | 主键 |
|
客户编号 | client_id | Char(8) | 外键 |
|
标的额 | sells_totall | Money | 非空 | >0 |
签约折扣 | sign_ discount | Money | 非空 | 非负/默认为“0” |
销售人员编号 | seller_id | Char(8) | 非空 |
|
订立日期 | sign_date | datetime | 非空 |
|
履行日期 | carry_date | datetime | 非空 |
|
履行方式 | carry_mode | Char(20) | 非空 | 参引表 :carry_type |
履行状态 | contract_statu | Bit | 非空 | “1”为履行完毕,“0”为未完毕(默认) |
履约评估 | contract_talk | Char(30) | 无 | 参引表 :talk_type |
相关表:订单(合同编号)、客户(客户编号)、个人销售记录(销售人员编号)、合同意外处理(合同编号)、履行方式、履约评估 说 明:合同编号及标的额在订单的输入由系统生成,履行方式可作为本表的一个小备注,如具体时间、地点、提货或是送货等;销售人员项由程序提供名单,供用户选择,用户亦可输入,但不能是数据库之外的——可以以公司名义而不划入任何个人,故此处不将其作为外键,仅查询出来供用户选择;不再履行的合同也视为已经履行(即不再将此合同列入待履行之列)。 |
表十一:contract_mode(履行方式)
字段 | 类型(长度) | 约束 | 说明 | |
序号 | carry_id | tinyint | 标识列,主键 | 相关表:合同 有关属性与产品类别表相似。 |
理由描述 | carry_type | Char(20) | 非空 |
表十二:contract_talk(合同评估)
字段 | 类型(长度) | 约束 | 说明 | |
序号 | talk_id | tinyint | 标识列,主键 | 相关表:合同 有关属性与产品类别表相似。 |
具体描述 | talk_type | Char(20) | 非空 |
表十三:contract_cancel(已废止/取消的合同)
字段 | 类型(长度) | 约束 | 说明 | |
合同编号 | contractl_id | Char(10) | 外键/主键 | 相关表:合同 有关属性与产品类别表相似。 |
废止理由 | cancel_type | Char(20) | 非空 | |
废止日期 | cancel_date | datetime | 非空 |
表十四:Suddenness(合同意外处置)
字段 | 类型(长度) | 约束 | 说明 | |
合同编号 | contract_id | Char(10) | 外键 | 未使用主键 |
日 期 | treatdate | datetime | 非空 | |
处置方式 | treatment | Varchar(50) | 非空/参引十五:deal_mode | |
相关表:合同(合同编号) 说 明:均由用户输入(处置方式如提前、推迟、取消等,通过程序修改合同及相关表格) |
表十五:deal_mode(意外处置方式)
字段 | 类型(长度) | 约束 | 说明 | |
序号 | deal_id | tinyint | 标识列,主键 | 相关表:合同 有关属性与产品类别表相似。 |
处置方式 | deal_mode | Char(30) | 非空 |
表十六:contract_profit(合同利润)
字段 | 类型(长度) | 约束 | 说明 | |
合同编号 | contract_id | Char(10) | 外键,主键 | 在“折扣”项中,如用户以比例形式提交,则在程序中先行计算 |
标的总成本 | totall_cost | money | 非空 | |
折 扣 | discount | money | 非空 | |
利润额 | contract_profit | money | 无 | |
利润率 | profit_margin | decimal | 无 | |
相关表:合同(合同编号) 说 明:折扣由用户输入,其余由系统建立。 |
表十七:contract_verify(合同评审记录/主体评审)
字段 | 类型(长度) | 约束 | 说明 | |
评审号 | verify_id | Char(10) | 主 键 | 由系统建立 |
评审日期 | verify_date | datetime | 非空 |
|
有关评审人员 | verify_persons | varchar(50) | 非空 |
|
客户编号 | client_id | Char(8) | 非空/外键 |
|
业务员编号 | seller_id | Char(8) | 非空 |
|
最低利润率需求 | verify_forprofit | decimal | 非空/非负 |
|
拟履行日期 | verify_carry | datetime | 非空 |
|
标的总额 | verify_allprice | money | 非空/“0” | 由系统建立 |
可能的折扣 | verify_allowdis | money | 非空/“0” | |
可实现的利润总额 | verify_profit | money | 非空/“0” | |
可实现的利润率 | verify_margin | decimal | 非空/“0” | |
生产能力评估 | verify_capacity | varchar(50) | 无 | |
系统建议结论 | verify_sysadvice | varchar(50) | 无 | |
评审结论 | verify_conclusion | varchar(50) | 无 | 可先登记,再评审 |
相关表:产品细分评审(评审号) 说 明:由于评审并不是一次完成,故允许有关的判断项暂允许为空。 |
表十八:contract_perverify(合同评审记录/产品细分评审)
字段 | 类型(长度) | 约束 | 说明 | |
评审号 | verify_id | Char(10) | 外键 | 主键 |
产品编号 | product_id | Char(10) | 外键 | |
数 量 | verify_number | int | 非空/正数 |
|
单 价 | perverify_price | smallmoney | 非空/正数 |
|
最低利润率需求 | perverify_forprofit | decimal | 非空/非负 |
|
可启动日期 | perverify_ondate | datetime | 非空 |
|
可实现利润 | perverify_profit | money | 非空/非负 | 由系统建立 |
可实现利润率 | perverify_margin | decimal | 非空/非负 | |
生产能力评估 | perverify_capacity | varchar(30) | 非空 | |
系统建议结论 | perverify_syadice | varchar(30) | 非空 | |
评审意见 | perverify_conclusion | varchar(30) | 无 | 可先登记,再评审 |
相关表:产品(产品编号)、主体评审(评审号) 说 明:暂不考虑产品质量;新时期产品的数据输入需一次完成,故除“评审意见”外,均不允许为空; |
表十九:Target(销售目标)
字段 | 类型(长度) | 约束 | 说明 | |
产品编号 | product_id | Char(10) | 外键,主键 |
|
本年度销售目标 | target | money | 非空/正数 |
|
相关表:产品(产品编号) 说 明:产品编号可选择,也可直接输入;工作界面增加产品大类,以方便用户。 |
表二十:Seller(销售员)
字段 | 类型(长度) | 约束 | 说明 | |
销售人员编号 | seller_id | Char(4) | 主键 | 新注册时由系统给出提示,超级用户可修改之。 |
姓 名 | seller_name | Char(15) | 非空 |
|
登录口令 | seller_pwd | Char(6) | 非空 |
|
状 态 | seller _statu | bit | 非空 | “1”为有效(默认),“0”为失效 |
相关表:个人目标分解表(编号) 说 明:均由用户输入,口令为标准的六位,不足由系统补足(用户表同)。 |
表二一:Seller_target(个人目标分解表)
字段 | 类型(长度) | 约束 | 说明 | |
销售人员编号 | seller_id, | Char(4) | 外键,主键 |
|
产品编号 | product_id | Char(10) | 外键 |
|
个人目标 | per_target | money | 非空/正数 |
|
相关表:销售员(编号)、产品(产品编号) 说 明:工作界面可增加产品大类,以方便用户 |
表二二:userlist(用户表)
字段 | 类型(长度) | 约束 | 说明 | |
用户编号 | user_id | Char(4) | 主键 | 在申请用户时,程序中要求提交用于申请用户的密码,代替管理员的确认(销售人员表同) |
用 户 名 | user_name | Char(15) | 非空 | |
密 码 | user_pwd | Char(6) | 非空 | |
状 态 | user_statu | bit | 非空 | “1”为有效(默认),“0”为失效 |
相关表:用户操作(编号) 说 明:均由用户输入(可以考虑增加一张表,对业务员及用户状态中的“失效”作出说明,但这应该属于人力资源管理的范畴,放在此处 可能不太合适!)。 |
表二三:Operate_recorders(用户操作记录表)
字段 | 类型(长度) | 约束 | 说明 | |
操作序号 | operate_id | int | 标识列,主键 |
|
用户编号 | user_id | Char(4) | 外键 |
|
记录日期 | operate_date | datetime | 非空 |
|
操作记录 | operate_text | Char(20) | 非空 |
|
相关表:用户表(编号) 说 明:均由系统(以模块函数方式)建立,以实际变更数据库中的值为标准(即单纯的查看不计)。 |
(二)、视图对象设计
为方便查询与维护,本数据库设计了十六个视图,具体描述如下:
视图一:produce_view(在产品目录)
字段名 | 来源字段 | 来源表 | 连接关系及条件、聚合等 | |
产品编号 | productid | product_id | Product | product_type .type_id = Product.product_type
Product .product_statu = 1 |
产品名称 | productname | product_name | Product | |
产品大类 | typename | type_name | product_type | |
单位成本 | productcost | product_cost | Product | |
备 注 | productmenu | product_menu | Product |
说 明:以“产品”表为基础,为查询提供方便;对于成本的查看同样需要权限。
视图二:contract_view(合同)
字段名 | 来源字段 | 来源表 | 连接关系及条件、聚合等 | |
合同编号 | contractid | contract_id | Contract | Client. client_id= Contract. client_id
Seller.seller_id= Contract. seller_id
Suddenness.contract_id= Contract.contract_id |
客户编号 | clientid | contract_id | Contract | |
客户名称 | clientname | client_name | client | |
标 的 额 | sellstotall | sells_totall | Contract | |
签约折扣 | signdiscount | sign_discount | Contract | |
业务员编号 | sellerid | seller_id | Contract | |
业务员姓名 | sellername | seller_name | Seller | |
订立日期 | signdate | sign_date | Contract | |
履行日期 | carrydate | carry_date | Contract | |
履行方式 | carrymode | carry_mode | Contract | |
履行状态 | contractstatu | contract_statu | Contract | |
履约评估 | contracttalk | contract_talk | Contract | |
日期/意外 | dealdate | treatdate | Suddenness | |
意外情况 | deal | treatment | Suddenness |
说 明:以“合同”表为基础,通过“客户”、“销售员”、“合同意外处置”补充数据。
视图三:product_sales_view(产品销售情况)
字段名 | 来源字段 | 来源表/视图 | 连接关系及条件、聚合等 | |
产品编号 | productid | product_id | orders | orders.contract_id= contract_view.contractid
orders.product_id= product_view.product_id
|
产品名称 | productname | product_name | product_view | |
产品类别 | typename | typename | product_view | |
销售数量 | sellsnumber | sells_number | orders | |
签约价格 | perprice | per_price | orders | |
签约质量 | contractqulity | contract_qulity | orders | |
产品成本 | productcost | productcost | product_view | |
合同状态 | contractstatu | contractstatu | contract_view | |
签约日期 | signdate | sign_date | product_view | |
客户编号 | clientid | clientid | product_view | |
客户名称 | clientname | client_name | product_view | |
业务员编号 | sellerid | sellerid | product_view | |
业务员姓名 | sellername | seller_name | product_view |
说 明:以“订单”表为基础,通过“合同”视图与“在产品”视图补充数据。
视图四:sales_target_view1(销售目标完成情况/宏观、签约、产品)
字段名 | 来源字段 | 来源表/视图 | 连接关系及条件、聚合等 | |
产品编号 | productid | product_id | target | produce_view . productid=target.product_id product_sales_view . productid = target.product_id group by productid,…, contractstatu (注:在来源中已能表明关系的,此处不再重复,下同) |
产品名称 | productname | productname | produce_view | |
产品类别 | typename | typename | produce_view | |
销售目标 | target | target | target | |
销售总额 | totallprice | sellsnumber*perprice | product_sales_view | |
销售数量 | sumnumber | sum (sellsnumber) | product_sales_view | |
产品均价 | avgprice | SUM(sellsnumber*perprice)/ SUM(sellsnumber) | ||
合同份数 | contractnumber | COUNT(contractid) | product_sales_view | |
合同状态 | contractstatu | contractstatu | product_sales_view |
说 明:按产品分组,有汇总;以“营销目标”表为基础,通过“产品销售情况”视图和“在产品”视图补充 数据;“合同状态”作为以后查询的条件依据。
视图五:sales_target_view2(销售目标完成情况/产品、履行)
字段名 | 来源字段 | 来源表/视图 | 连接关系及条件、聚合等 | |
产品编号 | productid | product_id | sales_target_view1 | contractstatu=1
group by productid,… |
产品名称 | productname | productname | ||
产品类别 | typename | typename | ||
销售目标 | target | target | ||
销售总额 | totallfinish | SUM(totallprice) | ||
销售数量 | numberfinish | SUM(sumnumber) | ||
合同份数 | contractfinish | SUM(contractnumber) | ||
产品均价 | avgfinish | SUM(totallprice) / SUM(sumnumber) |
视图六:sales_pertarget1_view1(销售目标完成情况/业务员、产品、签约)
字段名 | 来源字段 | 来源表/视图 | 连接关系及条件、聚合等 | |
业务员编号 | sellerid | seller_id | Seller_target | produce_view . productid=Seller_target.product_id
product_sales_view . sellerid = Seller_target. seller_id
group by seller_id, productid,…, contractstatu |
业务员姓名 | sellername | sellername | product_sales_view | |
产品编号 | productid | product_id | Seller_target | |
产品名称 | productname | productname | produce_view | |
产品类别 | typename | typename | produce_view | |
个人目标 | pertarget | per_target | Seller_target | |
销售总额 | sumprice | sellsnumber*perprice | product_sales_view | |
销售数量 | sumnumber | sum (sellsnumber) | product_sales_view | |
产品均价 | avgprice | sum(sellsnumber*perprice)/ sum(sellsnumber) | ||
合同份数 | contractnumber | count(contractid) | product_sales_view | |
合同状态 | contractstatu | contractstatu | product_sales_view |
说 明:按业务员,产品分组,有汇总;以“个人目标分解”表为基础,按业务员及订单产品分类,以签约为 标准,通过“产品销售情况”视图和“在产品”视图补充数据;“合同状态”作为以后查询的条件依据。
视图七:sales_pertarget1_view2(销售目标完成情况/业务员、产品、履行)
字段名 | 来源字段 | 来源表/视图 | 连接关系及条件、聚合等 | |
业务员编号 | sellerid | sellerid | sales_pertarget1_view1 | contractstatu=1
group by sellerid ,productid,… |
业务员姓名 | sellername | sellername | ||
产品编号 | productid | product_id | ||
产品名称 | productname | productname | ||
产品类别 | typename | typename | ||
个人目标 | pertarget | pertarget | ||
销售总额 | totallfinish | sum(totallprice) | ||
销售数量 | numberfinish | sum(sumnumber) | ||
产品均价 | avgfinish | sum (totallprice) / sum (sumnumber) | ||
合同份数 | contractfinish | sum (contractnumber) | sales_pertarget1_view1 |
视图八:product_view(产品利润视图)
字段名 | 来源字段 | 来源表/视图 | 连接关系及条件、聚合等 | |
产品编号 | productid | product_id | product_profit | produce_view.product_id= product_profit.product_id
Orders.product_id= product_profit.product_id |
产品名称 | productname | productname | produce_view | |
产品类别 | producttype | producttype | produce_view | |
合同编号 | contractid | contract_id | product_profit | |
销售数量 | sellsnumber | sells_numbe | Orders | |
销售价格 | perprice | perprice | Orders | |
产品成本 | productcost | product_cost | produce_view | |
产品毛利 | profit | profit | product_profit | |
利 润 率 | rpofitmargin | profit_margin | product_profit |
说明:以“产品利润”表为基础,通过“在产品视图”和“定单”表补充数据;此处计算的是每一份合同的每 一种产品的毛利,没有判断合同是否已经履行,在组织用户查询时,可能会附带条件,此时则需另行附加条件并组织联接进行查询。
视图九:sales_pertarget2_view1(销售目标完成情况/业务员、合同、签约细目)
字段名 | 来源字段 | 来源表/视图 | 连接关系及条件、聚合等 | |
业务员编号 | sellerid | seller_id | Seller_target | Contract.seller_id=seller_target.seller_id seller.seller_id=seller_target.seller_id |
业务员姓名 | sellername | seller_name | Seller | |
合同编号 | contractid | contract_id | Contract | |
标的总额 | sellstotall | sells_totall | Contract | |
签约日期 | signdate | sign_date | Contract | |
履行日期 | carrydate | carry_date | Contract | |
合同状态 | contractstatu | contract_statu | Contract |
说 明:以“个人目标分解”表和“合同”表为基础,通过“销售员”表补充数据。
视图十:sales_pertarget2_view2(销售目标完成情况/业务员、履行细目)
字段名 | 来源字段 | 来源表/视图 | 连接关系及条件、聚合等 | |
业务员编号 | sellerid | sellerid | sales_pertarget2_view1 | contractstatu=1 |
业务员姓名 | sellername | sellername | ||
合同编号 | contractid | contractid | ||
标的总额 | sellstotall | sellstotall | ||
签约日期 | signdate | signdate | ||
履行日期 | carrydate | carrydate |
说 明:为了使用户可以确定的期间进行查询,故不对数据进行处理,根据用户的查询要求在具体查询时进行 处理(分类汇总)。
视图十一:store_ view(产品库存)
字段名 | 来源字段 | 来源表/视图 | 连接关系及条件、聚合等 | |
截止日期 | toDate | max(store_date) | Store | Produc_viewt.product_id= Store. product_id |
产品编号 | Productid | Product_id | Store | |
产品名称 | productname | productname | Produce_view | |
产品类别 | typename | typename | Produce_view | |
库存数量 | storenumber | store_number | Store | |
质量等级 | storequlity | store_qulity | Store | |
产品批号 | productcode | product_code | Store |
说 明:以“产品出/入库表”为基础;以最后一次登记日期作为截止日期。
视图十二:signcontract_view(签约客户/全部客户的查询直接操作表,不再建立视图)
字段名 | 来源字段 | 来源表/视图 | 连接关系及条件、聚合等 | |
客户编号 | clientid | client_id | client | Client. Client_id= contract.Client_id |
客户名称 | clientname | client_name | client | |
签约总额 | signtotall | sum(sells_totall) | Contract | |
联系人 | linkperson | client_person | client | |
联系方式 | clienttel | client_tel | client | |
住址 | Address | client_ad | client |
说 明:以“客户”表为基础,通过“合同”表补充数据。
视图十三:store_contract_view(现有库存占在履合同标的之比重)
字段名 | 来源字段 | 来源表/视图 | 连接关系及条件、聚合等 | |
产品编号 | productid | productid | store_ view | product_sales_view.productid= store_view.productid
contractstatu=0 |
产品名称 | productname | productname | store_ view | |
产品类别 | typename | typename | store_ view | |
截止日期 | todate | todate | store_ view | |
库存数量 | benumber | sum(storenumber) | store_ view | |
需求数量 | needsnumber | Sum(sells_number) | product_sales_view | |
质量等级 | qulity | storequlity | store_ view | |
在履合同标的总额 | totallprice | sum(sellsnumber * perprice) | product_sales_view | |
库存所占比重 | porpotion | sum(storenumber)/sum(sellsnumber)* 100 |
说 明:以“产品库存”视图为基础,通过“产品销售情况”视图补充数据。
视图十四:(产品签约焦点)
字段 | 来源字段 | 来源表/视图 | 连接关系及条件、聚合等 | |
客户编号 | clientid | client_id | client | client .client_id = product_sales_view.clientid
GROUP BY client.client_id, product_sales_view.productid,… |
客户名称 | clientname | client_name | ||
产品编号 | productid | productid | product_sales_view | |
产品名称 | productname | productname | ||
产品类别 | typename | typename | ||
合同编号 | contractid | contractid | ||
总 价 | totallprice | sum(sellsnumber * perprice) | ||
均 价 | avgprice | sum (sellsnumber *perprice) / sum (sellsnumber) | ||
总 成 本 | totallcost | sum (sellsnumber *productcost) |
说 明:以“客户”表为基础,通过“产品销售情况”视图补充数据。
视图十五:contract_verify_view(合同评审/主体)
字段 | 来源字段 | 来源表/视图 | 连接关系及条件、聚合等 | |
评审号 | verifyid | verify_id | contract_verify | client. client_id= contract_verify.client_id Seller. seller_id= contract_verify. seller_id |
评审日期 | verifydate | verify_date | ||
有关评审人员 | verifypersons | verify_persons | ||
客户编号 | clientid | client_id | ||
客户名称 | clientname | client_name | client | |
联系人/代表人 | clientperson | client_person | client | |
业务员编号 | sellerid | seller_id | contract_verify | |
业务员姓名 | sellername | seller_name | Seller | |
拟履行日期 | verifycarry | verify_carry | contract_verify | |
最低利润率需求 | verifyforprofit | verify_forprofit | ||
标的总额 | verifyallprice | verify_allprice | ||
可能的折扣 | verifyallowdis | verify_allowdis | ||
可实现利润总额 | verifyprofit | verify_profit | ||
可实现的利润率 | verifymargin | verify_margin | ||
生产能力评估 | verifycapacity | verify_capacity | ||
系统建议结论 | verifysysadvice | verify_sysadvice | ||
评审结论 | verifyconclusion | verify_conclusion |
说明;以“合同评审记录/主体评审”表为基础,通过“客户”、“业务员”表补充数据;用户界面添加成本总 额项(从在产品视图与产品细分视图中查询、计算)、最长需求期限、最短实现期限(产品细分评审相应的最大值,忽略需累加情形)。
视图十六:contract_perverify_view(合同评审/产品细分)
字段 | 来源字段 | 来源表/视图 | 连接关系及条件、聚合等 | |
评审号 | verifyid | verify_id | contract_perverify | produce_view. Productid= contract_perverify. product_id
|
产品编号 | productid | product_id | ||
产品名称 | productname | productname | produce_view | |
产品类别 | typename | typename | ||
数 量 | verifynumber | verify_number | contract_perverify | |
单 价 | perverifyprice | perverify_price | ||
最低利润率需求 | perverifyforprofit | perverify_forprofit | ||
成 本 | productcost | productcost | produce_view | |
可启动日期 | perverifyondate | perverify_ondate | contract_perverify | |
可实现利润 | perverifyprofit | perverify_profit | contract_perverify | |
可实现利润率 | perverifymargin | perverify_margin | ||
生产能力评估 | perverifycapacity | perverify_capacity | ||
系统建议结论 | perverifysyadice | perverify_syadice | ||
评审意见 | perverifyconclusion | perverify_conclusion |
说明;以“合同评审记录/产品细分评审”表为基础,通过“在产品视图”补充数据;用户界面添加成本总额项(从在产品视图与产品细分视图中查询、计算)、最长期限、最短实现期限(查询“合同评审记录/主体评审”与“产品生产周期”通过计算获得)。
(三)、数据库报表设计
本数据库暂未设计报表(拟将有关统计信息组织成报表)。
(四)、数据库逻辑结构设计
本数据库的逻辑结构如下图:
(五)、索引设计
每个表的主键都是聚集索引,SQL Server自动为这些主键设置索引和索引结构。
(六)、存储过程设计:
无存储过程。
(七)、触发器设计:
无触发器设计
(八)、其它逻辑设计
不适用。
(九)、数据库物理结构设计
本数据库的物理结构的部分符合SQL Server 2000关于数据文件、卷、页的分配和分配规则。
数据库初始大小为(20MB),按照超过最大容量后(20%)的增长速率进行增长。
数据库分配日志文件大小为(20M),自动增长。应用程序中自动截断事务日志。
数据库的物理文件、主要数据文件、次要数据文件、文件组等都按照系统的默认设置进行。物理文件的存储位置为SQL Server 2000默认的位置。
(一)、完成的数据库设计:
数据库名称:sales
中文名称或意义:营销
创建日期:2005.12.12
创建人:王章聖
数据文件初始大小:(20MB)
数据文件物理位置:(C:\SQL Server\Data\ Library_data.MDF)
日志文件初始大小:(20MB)
日志文件物理位置:(C:\SQL Server\Data\ Library_log.LDF)
文件组名称:sales
特性列表:
只读:False
限制访问:False
故障还原模型:简单
自动关闭:False;
自动收缩:True;
兼容性级别:数据库兼容性80
(二)、完成的数据表设计:
数据库表及结构参见本文档前面第三部分数据库结构设计。
(三)、完成其他数据库相关设计
数据库逻辑关系、检查、约束等设计参见本文档前面第三部分,此处略。
(四)、安全保密设计
数据库只被少数授权用户修改,其他受限用户有权查看,但均必须提供用户名和正确的密码。存储数据库的服务器也只能让系统管理员或少数高级管理人员登录。
数据库的安全策略,遵从SQL Server 2000的安全策略事项。
转载自: http://blog.163.com/saint998@126/blog/static/4306292920077293647361/