一、概述
(一)、数据库设计文档概述
本文档为北大青鸟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/