2023年7月27日发(作者:)
文档编号
2011-6-14
版本
A1
密级
商密A
*****中心开发部
项目名称
时代集团产品跟踪平台
项目来源
DR-RD-020(V1.1)
时代集团
数据库设计说明书
(内部资料 请勿外传)
编 写:
检 查:
审 核:
批 准:
*********
版权所有 不得复制
日 期:
日 期:
日 期:
日 期:
时代集团产品跟踪平台 ........................................................................................... 错误!未定义书签。
数据库设计说明书 .................................................................................................................................. 1
1
引言.................................................................................................................................................. 2
1.1
1.2
1.3
2
3
4
5
编写目的 ................................................................................................................................. 2
术语表 ..................................................................................................................................... 2
参考资料 ................................................................................................................................. 3
数据库环境说明 .............................................................................................................................. 3
数据库的命名规则 .......................................................................................................................... 3
逻辑设计.......................................................................................................................................... 3
物理设计.......................................................................................................................................... 4
5.1
5.2
5.3
5.4
表汇总 ..................................................................................................................................... 5
表[X]:[XXX表] .................................................................................................................... 5
视图的设计 ........................................................................................................................... 11
存储过程、函数及触发器的设计 ........................................................................................ 12
6
安全性设计 .................................................................................................................................... 23
6.1
6.2
6.3
防止用户直接操作数据库的方法 ........................................................................................ 23
用户帐号密码的加密方法 ................................................................................................... 23
角色与权限 ........................................................................................................................... 23
7
8
优化................................................................................................................................................ 24
数据库管理与维护说明 ................................................................................................................ 24
1
引言
1.1 编写目的
本文档是时代集团产品跟踪平台
概要设计文档的组成部分,编写数据库设计文档的目的是:明确数据库的表名、字段名等数据信息,用来指导后期的数据库脚本的开发,本文档遵循《SQL数据库设计和开发规范》。本文档的读者对象是需求人员、系统设计人员、开发人员、测试人员。
1.2 术语表
序号
1
2
术语或缩略语
ESID
ProId
说明性定义
EnterStorageId入库编号
ProductId产品编号 3
PMID ProductManagerId产品管理员编号
1.3 参考资料
资料名称
作者
文件编号、版本
资料存放地点
2
数据库环境说明
数据库系统
数据库实例
数据库部署环境
数据库设计工具
数据库存放位置
说明
3
数据库的命名规则
数据库名称:时代集团的英文名称time-group
表名:英文(表的用途)+下划线+英文
字段名:相关属性的英文名
4
逻辑设计
提示:数据库设计人员根据需求文档,创建与数据库相关的那部分实体关系图(ERD)。如果采用面向对象方法(OOAD),这里实体相当于类(class)。
合作伙伴partner_sett_rels合同:1inhr_partner_spinhr_partner_cp运营商coop_rels合同模板partner_sett_order服务提供商内容提供商结算帐单coop_settl_ordersp_coop_relscp_coop_relssettle_order_rels结算规则合同:2
5
物理设计
提示:
(1)主要是设计表结构。一般地,实体对应于表,实体的属性对应于表的列,实体之间的关系成为表的约束。逻辑设计中的实体大部分可以转换成物理设计中的表,但是它们并不一定是一一对应的。
(2)对表结构进行规范化处理(第三范式)。 5.1 表汇总
表名
Enter_storage
Exit_storage
Seller_info
Product_info
Repair_info
L
功能说明
产品入库(新产品的登记、修改、查询)
产品出库(登记产品出库信息)
销售商信息维护表(对销售商信息的添加、修改和查询)
产品信息表(对新产品的发布,修改,查询等维护)
维修表(对已出售产品的维修进行登记,修改)
管理员表(包含五种身份,销售人员,库存管理人员,售后服务人员,产品信息管理人员,系统管理员)
5.2 表:
表的索引: 索引是否建立要根据具体的业务需求来确定。
允许为空:不填的表示为“是”。
唯一:不填的表示为“是”。
表的记录数和增长量:根据具体的业务需求确定。增长量应确定单位时间如果量大可以按每天,如果不大可以按每月。
表字段的区别度:主要是考虑到将来在此字段上建立索引类型选择时作为参考,当字段值唯一时可以不考虑,当字段值不唯一时,估算一个区别度,近似即可。例如:如果一个表的NAME字段有共2000个值,其中有1999个不同值,1999/2000=0.99 越接近1区别度越高,反之区别度越低。
表的并发:根据具体的业务需求预测表的并发。
1.
表名
数据库用户
主键
其他排序字段
索引字段
序号 字段名称
Enter_storage
库存管理人员
ESID 入库产品编号
Product,date,num,storageManagerId
数据类型(精度范围)
允许为空Y/N
N
唯一Y/N
Y
区别度
默认值
约束条件/说明
1
2
3
4
5
ESID
Product
date
num
int
Varchar(50)
Varchar(50)
N
N
N
N
N
N
Y
SmallDateTime N
storageManagerId
Varchar(50)
Mysql脚本 CREATE TABLE [dbo].[Enter_storage](
(
[ESID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS =
ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
[ESID] [int] IDENTITY(1,1) NOT NULL,
[product] [varchar](50) NOT NULL,
[date] [smalldatetime] NOT NULL,
[num] [varchar](6) NOT NULL,
[storageManagerId] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_addStorage] PRIMARY KEY CLUSTERED
记录数
增长量
表的并发
补充说明
2.
表名
数据库用户
主键
其他排序字段
索引字段
序号 字段名称
Exit_storage
库存管理人员
ExitStorageId 出库产品编号
Product,date,num,storageManagerId
数据类型(精度范围)
允许为空Y/N
N
唯一Y/N
Y
区别度
默认值
约束条件/说明
1
2
3
4
5
ExitStorageId
Product
date
num
int
Varchar(50)
Varchar(50)
N
N
N
N
N
N
Y
SmallDateTime N
storageManagerId
Varchar(50)
Mysql脚本
CREATE TABLE [dbo].[Exit_storage](
[ExitStorageId] [int] IDENTITY(1,1) NOT NULL,
[product] [varchar](50) NOT NULL,
[date] [smalldatetime] NOT NULL,
[num] [varchar](6) NOT NULL,
CONSTRAINT [PK_subStorage] PRIMARY KEY CLUSTERED
(
[ExitStorageId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[Enter_storage] Script
Date: 01/17/2011 16:00:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
记录数
增长量
表的并发
补充说明
3.
表名
数据库用户
主键
其他排序字段
索引字段
序号 字段名称
Seller_info
销售商管理员
name
telephone,address,product, stockNum,stockDate,stockPrice
数据类型(精度范围)
允许为空Y/N
N
唯一Y/N
Y
区别度 默认值 约束条件/说明
1
2
3
4
5
6
7
name
telephone
address
product
stockNum
stockDate
Varchar(50)
Varchar(50)
Varchar(50)
Varchar(50)
N
N
N
N
N
N
N
N
N
N
SmallDateTime N
SmallDateTime N
stockPrice
Varchar(50)
Mysql脚本
CREATE TABLE [dbo].[Seller_info](
[name] [varchar](50) NOT NULL,
[telephone] [varchar](20) NOT NULL,
[address] [varchar](50) NOT NULL,
[product] [varchar](50) NOT NULL,
[stockNum] [varchar](6) NOT NULL,
[stockDate] [smalldatetime] NOT NULL,
[stockPrice] [varchar](10) NOT NULL,
CONSTRAINT [PK_maketer_Info] PRIMARY KEY CLUSTERED
(
[name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[Repair_info] Script Date:
12/16/2010 09:59:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
记录数
增长量
表的并发
补充说明
4.
表名
数据库用户
Product_info
产品信息管理人员
主键
其他排序字段
索引字段
序号 字段名称
proId
name,price,proDate, storage
数据类型(精度范围)
允许为空Y/N
N
唯一Y/N
Y
区别度
默认值
约束条件/说明
1
2
3
4
proId
name
price
proDate
int
Varchar(50)
Varchar(50)
N
N
N
N
N
SmallDateTime N
5
storage
Mysql脚本
Varchar(50) N Y
CREATE TABLE [dbo].[Product_info](
[proId] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50) NOT NULL,
[price] [varchar](6) NOT NULL,
[proDate] [smalldatetime] NOT NULL,
[storage] [varchar](4) NOT NULL,
CONSTRAINT [PK_product_Info] PRIMARY KEY CLUSTERED
(
[proId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[Login] Script Date:
01/17/2011 16:00:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
记录数
增长量
表的并发
补充说明
5.
表名
数据库用户
主键
其他排序字段
索引字段
序号 字段名称
Repair_info
售后服务人员
repairId 产品维修编号
repairName,repairtel,product, customer,date,customertel
数据类型(精度范围)
允许为空Y/N
N
唯一Y/N
Y
区别度 默认值 约束条件/说明
1
2
3
4
5
repairId
repairName
repairtel
product
customer
date
int
Varchar(50)
Varchar(50)
Varchar(50)
N
N
N
N
N
N
N
N
SmallDateTime N
SmallDateTime N
customertel
Varchar(50)
Mysql脚本
N N
CREATE TABLE [dbo].[Repair_info](
[repairId] [int] IDENTITY(1,1) NOT NULL,
[repairName] [nchar](10) NULL,
[repairtel] [nchar](10) NULL,
[product] [varchar](50) NOT NULL,
[customer] [varchar](20) NOT NULL,
[date] [smalldatetime] NOT NULL,
[customertel] [nchar](10) NULL,
CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED
(
[repairId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS
= ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[Product_info] Script Date:
01/17/2011 16:00:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
记录数
增长量
表的并发
补充说明
6.
表名
数据库用户
主键
其他排序字段
索引字段
序号 字段名称
Login
管理人员
userId 用户编号
password,userName,tel, birthday,registerTime,type
数据类型(精度范围)
允许为空Y/N
N
唯一Y/N
Y
区别度 默认值 约束条件/说明
1
2
3
4
userId
password
userName
tel
int
Varchar(50)
Varchar(50)
N
N
N
N
N
SmallDateTime N
5
6
7
birthday
type
Mysql脚本
Varchar(50)
Varchar(50)
(
N
N
N
N
N
registerTime
SmallDateTime N
CREATE TABLE [dbo].[Login](
[userId] [varchar](10) NOT NULL,
[password] [varchar](16) NOT NULL,
[userName] [varchar](20) NOT NULL,
[tel] [varchar](20) NOT NULL,
[birthday] [smalldatetime] NOT NULL,
[registerTime] [smalldatetime] NOT NULL,
[type] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_manager_Info] PRIMARY KEY CLUSTERED
[userId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
记录数
增长量
表的并发
补充说明
5.3 视图的设计
[根据XXX产品的概要设计文档来确定。
视图的命名按照《xx数据库设计规范》中关于视图的命名规范命名。
视图的设计应注意以下几点:
1
尽量减少列中使用的公式。
2
去掉所有不必要的列。
3
不要使同一个文档属于多个分类。
4
避免使用表单公式。] 5.4 存储过程、函数及触发器的设计
[存储过程及触发器的命名按照《xx数据库设计规范》中关于存储过程及触发器的命名规范命名。
存储过程:根据具体得业务逻辑确定输入参数个数,类型,确定对哪几个表进行何种作。
在定义存储过程时,要使用其完成单一、相对集中的任务,不要定义已由其他提供功能的过程。例如:不要定义强制数据完整性的过程(使用完整性约束)。
函数 :函数与存储过程非常相似,它也是存储在数据库中的对象。但是可以在SQL命令中使用函数。就好像建立自己的substr函数一样
触发器 :触发器是存储在数据库中的程序,它在某一特定事件发生时执行。这些程序可以用PL/SQL和java语言编写,也可以用作c语言的调用,数据库允许用户定义这些程序,然后在相关的表,视图或者数据库动作执行insert,update或delete语句时执行。]
1.存储过程:
CREATE PROCEDURE Enter_storage_GetMaxId
AS
CREATE PROCEDURE Enter_storage_Exists
@ESID int
AS
DECLARE @TempID int
SELECT @TempID = count(1) FROM [Enter_storage] WHERE ESID=@ESID
IF @TempID = 0
RETURN 0
DECLARE @TempID int
SELECT @TempID = max([ESID])+1 FROM [Enter_storage]
IF @TempID IS NULL
RETURN 1
RETURN @TempID
ELSE
ELSE
RETURN 1
CREATE PROCEDURE Enter_storage_ADD
@ESID int output,
@product varchar(50),
@date smalldatetime,
@num varchar(6),
@storageManagerId nvarchar(50)
AS
CREATE PROCEDURE Enter_storage_Update
@ESID int,
@product varchar(50),
@date smalldatetime,
@num varchar(6),
@storageManagerId nvarchar(50)
AS
CREATE PROCEDURE Enter_storage_Delete
@ESID int
AS
CREATE PROCEDURE Enter_storage_GetModel
@ESID int
AS
SELECT
ESID,product,date,num,storageManagerId
FROM [Enter_storage]
WHERE ESID=@ESID
DELETE [Enter_storage]
WHERE ESID=@ESID
UPDATE [Enter_storage] SET
[product] = @product,[date] = @date,[num] = @num,[storageManagerId]
WHERE ESID=@ESID
INSERT INTO [Enter_storage](
[product],[date],[num],[storageManagerId]
)VALUES(
@product,@date,@num,@storageManagerId
)
SET @ESID = @@IDENTITY
= @storageManagerId CREATE PROCEDURE Enter_storage_GetList
AS
CREATE PROCEDURE Exit_storage_GetMaxId
AS
CREATE PROCEDURE Exit_storage_Exists
@ExitStorageId int
AS
CREATE PROCEDURE Exit_storage_ADD
@ExitStorageId int output,
@product varchar(50),
@date smalldatetime,
@num varchar(6),
@storageManagerId nvarchar(50)
AS
CREATE PROCEDURE Exit_storage_Update
@ExitStorageId int,
INSERT INTO [Exit_storage](
[product],[date],[num],[storageManagerId]
)VALUES(
@product,@date,@num,@storageManagerId
)
SET @ExitStorageId = @@IDENTITY
DECLARE @TempID int
SELECT @TempID = count(1) FROM [Exit_storage] WHERE
IF @TempID = 0
RETURN 0
RETURN 1
ELSE
DECLARE @TempID int
SELECT @TempID = max([ExitStorageId])+1 FROM [Exit_storage]
IF @TempID IS NULL
RETURN 1
RETURN @TempID
ELSE
SELECT
ESID,product,date,num,storageManagerId
FROM [Enter_storage]
ExitStorageId=@ExitStorageId @product varchar(50),
@date smalldatetime,
@num varchar(6),
@storageManagerId nvarchar(50)
AS
CREATE PROCEDURE Exit_storage_Delete
@ExitStorageId int
AS
CREATE PROCEDURE Exit_storage_GetModel
@ExitStorageId int
AS
CREATE PROCEDURE Exit_storage_GetList
AS
CREATE PROCEDURE Login_Exists
@userId varchar(10)
AS
DECLARE @TempID int
SELECT @TempID = count(1) FROM [Login] WHERE userId=@userId
IF @TempID = 0
RETURN 0
ELSE
SELECT
ExitStorageId,product,date,num,storageManagerId
FROM [Exit_storage]
SELECT
ExitStorageId,product,date,num,storageManagerId
FROM [Exit_storage]
WHERE ExitStorageId=@ExitStorageId
DELETE [Exit_storage]
WHERE ExitStorageId=@ExitStorageId
UPDATE [Exit_storage] SET
[product] = @product,[date] = @date,[num] = @num,[storageManagerId]
WHERE ExitStorageId=@ExitStorageId
= @storageManagerId
RETURN 1
CREATE PROCEDURE Login_ADD
@userId varchar(10),
@password varchar(16),
@userName varchar(20),
@tel varchar(20),
@birthday smalldatetime,
@registerTime smalldatetime,
@type nvarchar(50)
AS
CREATE PROCEDURE Login_Update
@userId varchar(10),
@password varchar(16),
@userName varchar(20),
@tel varchar(20),
@birthday smalldatetime,
@registerTime smalldatetime,
@type nvarchar(50)
AS
CREATE PROCEDURE Login_Delete
@userId varchar(10)
AS
CREATE PROCEDURE Login_GetModel
DELETE [Login]
WHERE userId=@userId
UPDATE [Login] SET
[password] = @password,[userName] = @userName,[tel] = @tel,[birthday]
WHERE userId=@userId
INSERT INTO [Login](
[userId],[password],[userName],[tel],[birthday],[registerTime],[t)VALUES(
@userId,@password,@userName,@tel,@birthday,@registerTime,@type
)
ype]
= @birthday,[registerTime] = @registerTime,[type] = @type @userId varchar(10)
AS
CREATE PROCEDURE Login_GetList
AS
CREATE PROCEDURE Product_info_GetMaxId
AS
CREATE PROCEDURE Product_info_Exists
@proId int
AS
CREATE PROCEDURE Product_info_ADD
@proId int output,
@name varchar(50),
@price varchar(6),
DECLARE @TempID int
SELECT @TempID = count(1) FROM [Product_info] WHERE proId=@proId
IF @TempID = 0
RETURN 0
RETURN 1
ELSE
DECLARE @TempID int
SELECT @TempID = max([proId])+1 FROM [Product_info]
IF @TempID IS NULL
RETURN 1
RETURN @TempID
ELSE
SELECT
userId,password,userName,tel,birthday,registerTime,type
FROM [Login]
SELECT
userId,password,userName,tel,birthday,registerTime,type
FROM [Login]
WHERE userId=@userId @proDate smalldatetime,
@storage varchar(4)
AS
CREATE PROCEDURE Product_info_Update
@proId int,
@name varchar(50),
@price varchar(6),
@proDate smalldatetime,
@storage varchar(4)
AS
CREATE PROCEDURE Product_info_Delete
@proId int
AS
CREATE PROCEDURE Product_info_GetModel
@proId int
AS
CREATE PROCEDURE Product_info_GetList
AS
SELECT
proId,name,price,proDate,storage
FROM [Product_info]
WHERE proId=@proId
DELETE [Product_info]
WHERE proId=@proId
UPDATE [Product_info] SET
[name] = @name,[price] = @price,[proDate] = @proDate,[storage] =
WHERE proId=@proId
INSERT INTO [Product_info](
[name],[price],[proDate],[storage]
)VALUES(
@name,@price,@proDate,@storage
)
SET @proId = @@IDENTITY
@storage
SELECT
proId,name,price,proDate,storage
FROM [Product_info]
CREATE PROCEDURE Repair_info_GetMaxId
AS
CREATE PROCEDURE Repair_info_Exists
@repairId int
AS
CREATE PROCEDURE Repair_info_ADD
@repairId int output,
@repairName nchar(10),
@repairtel nchar(10),
@product varchar(50),
@customer varchar(20),
@date smalldatetime,
@customertel nchar(10)
AS
]
)VALUES(
INSERT INTO [Repair_info](
[repairName],[repairtel],[product],[customer],[date],[customertelDECLARE @TempID int
SELECT @TempID = count(1) FROM [Repair_info] WHERE repairId=@repairId
IF @TempID = 0
RETURN 0
RETURN 1
ELSE
DECLARE @TempID int
SELECT @TempID = max([repairId])+1 FROM [Repair_info]
IF @TempID IS NULL
RETURN 1
RETURN @TempID
ELSE
@repairName,@repairtel,@product,@customer,@date,@customertel
)
SET @repairId = @@IDENTITY
CREATE PROCEDURE Repair_info_Update
@repairId int,
@repairName nchar(10),
@repairtel nchar(10),
@product varchar(50),
@customer varchar(20),
@date smalldatetime,
@customertel nchar(10)
AS
UPDATE [Repair_info] SET
[repairName] = @repairName,[repairtel] = @repairtel,[product] =
@product,[customer] = @customer,[date] = @date,[customertel] =
@customertel
CREATE PROCEDURE Repair_info_Delete
@repairId int
AS
CREATE PROCEDURE Repair_info_GetModel
@repairId int
AS
CREATE PROCEDURE Repair_info_GetList
SELECT
repairId,repairName,repairtel,product,customer,date,customertel
FROM [Repair_info]
WHERE repairId=@repairId
DELETE [Repair_info]
WHERE repairId=@repairId
WHERE repairId=@repairId AS
CREATE PROCEDURE Seller_info_Exists
@name varchar(50)
AS
CREATE PROCEDURE Seller_info_ADD
@name varchar(50),
@telephone varchar(20),
@address varchar(50),
@product varchar(50),
@stockNum varchar(6),
@stockDate smalldatetime,
@stockPrice varchar(10)
AS
ce
CREATE PROCEDURE Seller_info_Update
@name varchar(50),
@telephone varchar(20),
@address varchar(50),
@product varchar(50),
@stockNum varchar(6),
)
INSERT INTO [Seller_info](
[name],[telephone],[address],[product],[stockNum],[stockDate],[st)VALUES(
@name,@telephone,@address,@product,@stockNum,@stockDate,@stockPriDECLARE @TempID int
SELECT @TempID = count(1) FROM [Seller_info] WHERE name=@name
IF @TempID = 0
RETURN 0
RETURN 1
ELSE
SELECT
repairId,repairName,repairtel,product,customer,date,customertel
FROM [Repair_info]
ockPrice] @stockDate smalldatetime,
@stockPrice varchar(10)
AS
UPDATE [Seller_info] SET
[telephone] = @telephone,[address] = @address,[product] =
@product,[stockNum] = @stockNum,[stockDate] = @stockDate,[stockPrice] =
@stockPrice
CREATE PROCEDURE Seller_info_Delete
@name varchar(50)
AS
CREATE PROCEDURE Seller_info_GetModel
@name varchar(50)
AS
CREATE PROCEDURE Seller_info_GetList
AS
2.库存量增减的触发器:
USE [TimeGroup]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SELECT
name,telephone,address,product,stockNum,stockDate,stockPrice
FROM [Seller_info]
SELECT
name,telephone,address,product,stockNum,stockDate,stockPrice
FROM [Seller_info]
WHERE name=@name
DELETE [Seller_info]
WHERE name=@name
WHERE name=@name ALTER trigger [dbo].[producttri]
on [dbo].[Enter_storage]
after update
as
update Product_info
set storage=storage+1
where Product_info. proId =(select proId from inserted)
6
安全性设计
提示:提高软件系统的安全性应当从“管理”和“设计”两方面着手。这里仅考虑数据库的安全性设计。
例如:应用级的用户帐号密码不能与数据库相同,防止用户直接操作数据库。用户只能用帐号登陆到应用软件,通过应用软件访问数据库,而没有其它途径操作数据库。
6.1 防止用户直接操作数据库的方法
提示:用户只能用帐号登陆到应用软件,通过应用软件访问数据库,而没有其他途径操作数据库。
6.2 用户帐号密码的加密方法
提示:对用户帐号的密码进行加密处理,确保在任何地方都不会出现密码的明文。
例如:用户帐号采用MD5进行数据加密后再录入数据库,以防止任何地方密码的安全性要求。
Sa 密码登录
6.3 角色与权限
提示:确定每个角色对数据库表的操作权限,如创建、检索、更新、删除等。每个角色拥有刚好能够完成任务的权限,不多也不少。在应用时再为用户分配角色,则每个用户的权限等于他所兼角色的权限之和。
角色
例如:管理员
可以访问的表与列
可访问所有表
完全控制权限
操作权限 角色B
7
优化
提示:分析并优化数据库的“时-空”效率,尽可能地“提高处理速度”并且“降低数据占用空间”。
(1)分析“时-空”效率的瓶颈,找出优化对象(目标),并确定优先级。
(2)当优化对象(目标)之间存在对抗时,给出折衷方案。
(3)给出优化的具体措施,例如优化数据库环境参数,对表格进行反规范化处理等。
优先级
优化对象(目标)
措施
8
数据库管理与维护说明
提示:在设计数据库的时候,及时给出管理与维护本数据库的方法,有助于将来撰写出正确完备的用户手册。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690431616a348965.html
评论列表(0条)