请教企业数据库结构设计(单库与多库)

xiaoyuehen 2003-07-22 05:37:43
中型企业(如连锁店),拥有几百家分店(300以上,在未来10年内以平均每年100家递增计),设数据每年8000万条,这样应该怎么设计数据库呢?

单库建多表(每店各一套表),单库单套表(所有分店数据在同一套帐表),多库单套表(每家分店一数据库)....应怎么选择??
...全文
141 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyuehen 2003-07-25
  • 打赏
  • 举报
回复
不知道为什么结不了贴!:(

回复次数大于给分次数是什么意思啊?

若用数据仓库的话...将来分店达到1000家时,那数据库岂不是非常庞大吗?另外当汇总全国数据的时候,速度也有一定问题呀...公司曾采用数据仓库的办法,做全国产品销售分析,用.net做的,全国统计时长将近 2 分钟..这样会算很慢吗?(我觉得挺慢的:D)

全国销售数据约为 600 万条/年..
txlicenhe 2003-07-25
  • 打赏
  • 举报
回复
都有道理,自己看着办吧。有时候问多了倒没有主意了。
netdreamingboy 2003-07-25
  • 打赏
  • 举报
回复
很明显这已经是一个数据仓库的问题
用其他方式解决可能后续问题比较多
xutaohuang 2003-07-24
  • 打赏
  • 举报
回复
up!
xiaoyuehen 2003-07-24
  • 打赏
  • 举报
回复
再请问动态建库或表的问题...可以用存储过程吗?

试了一个早上,还是没能做出来

如给定一个参数msdm,表示分店的代码,然后动态建立分店的表(tab_msdm_财务套帐),怎么做呢?
skyzj 2003-07-24
  • 打赏
  • 举报
回复
多库单表比较好,如此多的店肯定各有各的不同,一个店一个库比较便于维护,
然后把一些需要的数据集中到总库中,便于集中管理,总库和分库的结构当然不同
xiaoyuehen 2003-07-24
  • 打赏
  • 举报
回复
--建立地区全部套帐表的存储过程

if object_id('dbo.u_dt_dqdm_cr_tab') is not null
drop procedure dbo.u_dt_dqdm_cr_tab
go

CREATE PROCEDURE dbo.u_dt_dqdm_cr_tab
@ssdq varchar(50) = null
AS
declare @tem_s_dqdm_tab as nvarchar(100)
declare @tem_sql_string as nvarchar(1024)
--执行删除表与建表的语句
Set @tem_s_dqdm_tab = '[dbo].[user_' + @ssdq + '_hrc21]'

Set @tem_sql_string = 'if exists (select * from dbo.sysobjects where id = object_id(N''' + @tem_s_dqdm_tab + ''') and OBJECTPROPERTY(id, N''IsUserTable'') = 1) drop table '+ @tem_s_dqdm_tab
exec (@tem_sql_string)

Set @tem_sql_string = '
CREATE TABLE ' + @tem_s_dqdm_tab +' (
[ID] [bigint] IDENTITY (1, 1) NOT NULL ,
[cszh] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[dh] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[dd] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[rq] [smalldatetime] NULL ,
[xc] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[flh] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[sl] [numeric](10, 2) NULL ,
[dw] [char] (4) COLLATE Chinese_PRC_CI_AS NULL ,
[dj] [numeric](15, 6) NULL ,
[hd] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
[ss] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
[js] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
[ywy] [char] (4) COLLATE Chinese_PRC_CI_AS NULL ,
[ysfs] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
[hth] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[ck] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
[je] [numeric](15, 2) NULL ,
[yhm] [char] (6) COLLATE Chinese_PRC_CI_AS NULL ,
[hsj] [char] (8) COLLATE Chinese_PRC_CI_AS NULL ,
[cbdj] [numeric](10, 2) NULL ,
[se] [numeric](15, 2) NULL ,
[dj3] [numeric](15, 2) NULL ,
[jshj] [numeric](15, 2) NULL ,
[gh] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[ddm] [char] (20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]'
print @tem_sql_string
exec (@tem_sql_string)
go

u_dt_dqdm_cr_tab 'TB'

--------------------------------------------------------------------
100分都不知道该给谁了..
第 23 行: 'numeric' 附近有语法错误。帮忙啊...
怎么有错误呢???
xiaoyuehen 2003-07-23
  • 打赏
  • 举报
回复
一份套帐约为10-20个表...
xiaoyuehen 2003-07-23
  • 打赏
  • 举报
回复
UP

暂时决定以单库多表形式...一个地区管理若干个分店,一个地区一份套帐表(表内以分店代码区分,一年大概300万条记录)..

各位高手评评呀..这样做有什么优缺点??
netdreamingboy 2003-07-23
  • 打赏
  • 举报
回复
主体库主要用来记录多库的有关信息
比如分店的编码等有关信息
netdreamingboy 2003-07-23
  • 打赏
  • 举报
回复
用数据库仓库解决吧
没有更加好的方法
多库单套表+主体库
milerzhang 2003-07-23
  • 打赏
  • 举报
回复
我觉得是单库建多表比较好!它在一定程度上集合了单库单套表和多库单套表的优点!这是我的个人意见!
有高手吗?我说的有错吗?大家来讨论一下!这个问题很有趣呀!我帮你……顶!
xiaoyuehen 2003-07-23
  • 打赏
  • 举报
回复
我只能算初学者, 主要是考虑如下问题:
1.可作一功能在每年年底对全国数据进行汇总,生成年套帐.
2.便于管理,备份
3.统计,查询速度快

单库建多表:
每店各一套表(假设为10个表), 300多家店就有3000多个表了, 将来若将分店扩展到1000家的话,一个库3万多个表,若300个用户同时连线操作的话(软件为三层结构),速度影响会不会很大呢?单店查询速度应该很快吧?全国统计分析的速度呢?

单库单套表(所有分店数据在同一套帐表):
所有套帐集合在几个表中,以店代码或其他标识来区分...这样对于软件开发而言,难度会不会相对减低很多?而且每年8000万条的数据,查询统计速度应该不会太低吧?..备份也容易..
主要缺点在于单店管理较杂乱,很不方便...

多库单套表(每家分店一数据库):
与前一类形成鲜明对比,单店管理非常方便,单店类查询分析统计速度快捷..缺点在统计全国套帐速度难以忍受(超过2分钟),数据库非常庞大

若只有一台数据库服务器,以上三类对于服务器的资源消耗是否相当呢?
friendliu 2003-07-22
  • 打赏
  • 举报
回复
如果数据量很大,也可以考虑用ORACLE,
pengdali 2003-07-22
  • 打赏
  • 举报
回复
怎么存放,要考虑代码的编写,数据库的维护,等具体实际情况,库是可以优化的,方法有很多,分库,不如分多数据文件
eastpond 2003-07-22
  • 打赏
  • 举报
回复
建议使用登山者的方法
woyaofengle 2003-07-22
  • 打赏
  • 举报
回复
用地域将其分开,再在该地域用单库单套表(所有分店数据在同一套帐表),
愉快的登山者 2003-07-22
  • 打赏
  • 举报
回复
多库单套表(每家分店一数据库);
再建立一个总库,存放数据统计表。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧