帐户数据库设计

问题描述:

大家好,我正在为我的公司开发一个帐户包,使用Sql Server 2008和VB.Net。帐户数据库设计

我需要一些关于数据库设计的帮助。

我有以下表

AccountsGroupMaster 

GroupId int 
GroupName nvarchar(50) 
ParentGroupId int 
CatId int 
PrimaryGroup bit 
CreatedByUser nvarchar(50) 
CreatedOn datetime 

上表将存储在账户组,例如:流动资产等

Accounts Table 

AccCode nvarchar(6) 
AccountName nvarchar(30) 
ParentAcc nvarchar(6) 
GroupId int 

上表存储账户/分类帐。

VoucherMain 

VoucherNo bigint 
VoucherDate datetime 
DebitCredit int (0 for Credit 1 for Debit) 
AccCode nvarchar(6) (Account Code to be debited/Credited) 
UserID nvarchar(30) 

VoucherDetails 

VoucherNo bigint 
SlNo int 
AccCode nvarchar(6) (Debit this account if account in VoucherMain credited/ Credit this account if account in VoucherMain Debited) 
Amount decimal(18, 2) 
Narration nvarchar(MAX) 

以上两个表存储transactions.The以上两代表由VoucherNo列

现在我的问题是我是否应该保持在账目表中的所有银行账户或者我应该有一个单独的链接银行账户表。 由于每个银行账户都应有其各自的分类账。

请帮我设计这个数据库。 谢谢

BankAccount不同于Account?如果它完全是一个不同的实体,那么它可能会调用它自己的表。如果它只是Account那么它可能不是。在这种情况下,可能有其他选项:

例如,您可以将添加到Account表中,以确定哪些是BankAccount类型,哪些不是。

或者,如果不同的是不仅仅是一个类型标志越来越包括适用到特定类型Account实例数据的额外帐户级别列,那么你可以做一个子表。它将是一个BankAccounts表,但其主键也将是Accounts表的外键,从而在两者之间建立强制的0-1关系。

然后,无论何时创建一个BankAccount记录,您首先将一条记录添加到Accounts表中,获取生成的密钥并使用该密钥向BankAccounts表添加记录。