题目:
以活期储蓄管理系统为例来说明在企业管理器中进行数据库设计。
7.1 活期储蓄管理系统需求
7.2 概念模型设计
7.3 关系模型设计
7.4 约束关系
7.5 关系结构描述
7.6 在企业管理器中定义
在活期储蓄管理过程中,“储户”通过“存取款”与“储蓄所”发生业务联系。
(1)储户是指在某个储蓄所开户的人。该储蓄所称为储户的开户行。
(2)一个储蓄所可以有多个储户,每个储户有唯一的帐号。
(3)每个储户可以在多个允许发生业务的储蓄所进行存取款。
(4)每个储户按信誉分为“一般”和“良好”两种(分别用0和1表示)。信誉“一般”的储户不允许透支。信誉“良好”的储户可以透支,但不能超过5万元。
(5)储户按状态分为:“正常”和“挂失”两种(分别用0、1表示)。状态为“正常”的储户允许存取款,状态为“挂失”的储户不允许存取款。
(6)储户的信息有:帐号,姓名,密码,电话,地址,信誉,存款额,开户行编号,开户日期,状态等。
(7)储蓄所的信息有:编号、名称、电话、地址、负责人。
(8)储户进行存取款时应该提供帐号、存取标志(1表示存款,0表示取款),存取金额,存取日期等信息,储蓄所首先要对储户的身份进行验证,对合法的储户再根据“信誉”判断是否可以发生此次业务。若发生业务则记录相应信息,修改储户的存款额。
此系统涉及“储户” 与“储蓄所”两个实体集,两个实体集间通过“存取款”发生多对多的联系。
根据概念模型,关系模型中包括3个关系,实体集“储户” 与“储蓄所”分别形成关系,实体的键就是关系的键,联系“存取款”形成一个关系,主键应该包括两个实体的键,考虑到允许同一储户在同一储蓄所多次存取款,应该包括存取日期。
考虑到储户的信息项较多,而且有一部分信息(如:帐号,姓名,电话,地址,开户行等)相对固定,其余信息(如:储户的密码,信誉,状态,存款额等)经常变化。因此,可以将实体储户的信息分割为储户基本信息和储户动态信息两个关系。这样更利于数据的存储和维护,还可以提高数据的安全性。
转换后的关系模型为:
储户基本信息(帐号,名称,电话,地址,开户行,开户日期)
储户动态信息(帐号,密码,信誉,存款额,状态)
储蓄所(编号,名称,电话,地址)
存取款(帐号,储蓄所编号,存取标志,存取金额,存取日期)
实体完整性:“储户”的主键“帐号”不能为空,“储蓄所”的主键“编号”不能为空,“存取款”的主键“帐号”,“储蓄所编号”,“存取日期”不能为空。
参照完整性:参照关系“存取款”的属性“帐号”和“储蓄所编号”分别是被参照关系“储户”和“储蓄所”的外键。因此,参照关系“存取款”的属性“帐号”的值必须是被参照关系“储户”中某一元组的“帐号”的值。参照关系“存取款”的属性“储蓄所编号”的值必须是被参照关系“储蓄所”中某一元组的“编号”的值。
关系“储户”的属性“开户行”,是关系“储蓄所”的外键,其取值必须是“储蓄所”的“编号”的值。
用户定义的完整性:
对信誉为“一般”的储户取款时,只有当:
“储户.存款额”-“存取款.金额”>=0时才可以发生取款业务;
对信誉为“良好”的储户取款时,只有当:
“储户.存款额”-“存取款.金额”>=-50000时可以发生取款业务
现在我表什么都弄好了,但是关于最后用户定义完整性的那块不会弄.现在最大的问题是,如何确定信誉是0还是1?同样的问题就是如何确定存款与否的0和1?怎么返回过去后便能实现存取的分别??
[求助]一个关于数据库设计的初级问题!!