数据库分库说明
(创建时间:2009年06月05日 18:49:00)
Jangogo : 

系统采用按不同的企业的不同会计年份来划分数据库,即:某企业的某年度数据为一个数据库
如果一个企业 跨会计年份使用本系统,就需要多个按年份划分的数据库。年度终了,企业需要执行 结转到下年的功能,系统会自动创建下一年的数据库,并进行必要的数据初始化。

如果使用的是 ACCESS 类型的数据库,数据库的文件名称规则是: 企业名称.年份.LAPUTADB
ACCESS是文件型数据库,数据文件默认存放在 用户的 MyDocument 目录。


如果是使用 SQL Server. 系统会先创建一个 【系统数据库】,用于保存所有在SQL Server 里面的其他真正的帐套数据的信息。
系统数据库的名称通过  Config.asp 文件 里面的 Application(DBType & "DBPrefix") 来指定,默认为 SaaSDB
帐套数据库都会 按照 系统数据库名称_ID 来命名(ID 是系统数据库里面的accinfo 表 里面的ID字段的值) , 即数据名称为:

系统数据库名称_oID(如果oID为零则为ID)_年份(accyear)   ,例:SaaS4DB_3_2010

系统数据库里面只有一个表:

 
  1. CREATE TABLE [accinfo] (   
  2.    [ID] integer identity(1,1) not null CONSTRAINT [PK_accinfo_ID] PRIMARY KEY,   
  3.    [UserID] varchar(50) not NULL,      
  4.    [accname] varchar(250) null,   
  5.    [accyear] INTEGER not null,   
  6.    [oID] integer not null default 0   
  7. );  

这个表会在 sys/listdb_sqlserver.asp 中 当用户第一次访问本系统的时候自动创建
ID :  序号
UserID :  属于那个用户的,即 数据库的创建人和管理者,用户登陆后,依赖这个字段列出他属下的企业帐套
accname : 帐套的企业名称
accyear : 帐套的会计年份
oID : 关联ID,当结转下年的时候,系统会自动填入该帐套的上一次的ID,实现两条记录有关联关系。
 


2010-12-16 为集团版增加数据库的隐藏功能,在accinfo  表中增加一个字段:

if not exists (select * from syscolumns where id=object_id('accinfo') and name= 'uids') ALTER table [accinfo] Add  [uids] varchar(MAX) null;

隐藏帐套的通过用户在设置权限 中 添加 用户ID到 这个表来实现。

注意:在结转下年的时候也必须添加相应的用户ID到本表的相应记录

文档中心