谁能分析这个数据库的结构

lishle 2003-09-13 10:33:49
我最近在开发一个期刊的管理软件 但数据库的设计一直没有得到解决,所有希望各位师兄邦我分析一下 也算交个朋友

大家都知道“期刊”也就是“杂志”,不同的期刊发行的周期是不一样的,有“周刊”“月刊”“半月刊”“季刊”“半年刊”等等 我所要实现的是每来一种“期刊”数据库就可以记录来的是第几期 但由于刊种太多没办法判断 这个数据库到底该怎么设计 希望大家能邦我考虑一下 可能我说的不是太清楚 我会劲力补充
...全文
37 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
GoldJava 2003-09-15
  • 打赏
  • 举报
回复
我主张用三张表的做法,但具体实现方法不同:
第一张表为期刊信息表:字包括:ISSN,代码,刊名,刊期,主办者,出版地等信息。第二张表为刊期记录,即:记录月刊,周刊,年刊,季刊等的特点,有两个字段期刊,总期数/年。第三张表为到刊记录,由前两个表生成,有四个字段,ISSN,应到数,实到数,记到日期等。这样在生成第三个表时,一次性生成整个表单。例如:给ISSN号为:7568-2223的季刊生成的第三个表为
ISSN 到期 应到 实到 日期
7568-2223 1 5 0
7568-2223 2 5 0
7568-2223 3 5 0
7568-2223 4 5 0
这样到时只需修改到数即可,便于统计实到数,查出缺刊记录,而且通进应到和实到的差可得出那些期刊到货不齐。
realgz 2003-09-15
  • 打赏
  • 举报
回复
觉得做复杂点好:
类型表(基本属性)::
类型id(pk),发行描述(char),周期性质(年相关/月相关/周相关/日相关)(int)
对于周期性质使用整数操作获得性质(就像unix下的文件权限表示),比如设定规则,以周期性质的高8位的后4位做为表示相关性质的是否存在,低24位分为4个6位作为相关周期的属性(每个6位的第一位表示是否需要细分本周期(如半月,半周))。
用二进制可以清楚看到期刊性质情况:
如0x0000 0010 000000 000000 100001 000000 表示半月刊=1677216
0x0000 0010 000000 000000 000011 000000 表示季刊
0x0000 1000 000001 000000 000000 000000 表示年刊
用这种类型的编码还可以新增复合类型如每一月零一周发行的刊物:
0x0000 0110 000000 000001 000001 000000
如果需要知道哪一类型是否与哪一周期相关,只要一个&操作就可以获得结果
0x0000 0010 000000 000000 000011 000000
& 0x0000 0010 000000 000000 000000 000000
= 0x0000 0010 000000 000000 000000 000000 //因此周期与星期相关
再加上发行周期内日期就可以知道
报刊目录表(基本属性):
报刊代号,报刊名称,报刊类别(报纸/杂志),报刊种类(类型ID),出版日期(tinyint)
其中,出版日期为该报刊在周期内的发布日期,如每周二发行就可以用出版日期为3的周刊记录表示。
这样的话就可以方便地专门做一个存储过程(函数?)来计算任意属性刊物的期数和其他数据了,而且在新增类型的时候不必更改原来的计算逻辑。

leimin 2003-09-14
  • 打赏
  • 举报
回复
类型表:
类型id(pk),期刊类型,状态,总期数
期刊类型:双月刊,旬刊,旬二刊,半年刊,年刊,半月刊,周刊,周二刊
状态:0 正常期刊;1 增刊;2 副刊

期刊表:
期刊id(pk),刊号(PK),期次(pk),类型id, 日期,数量,是否有副刊

副刊表:
副刊id(pk),刊号(PK),期次,类型id, 日期,数量
davidtc 2003-09-14
  • 打赏
  • 举报
回复
呵呵,碰到同行了,我以前是做邮局报刊发行系统的

不知道你做的系统复杂到什么程度?
如果只是要计算一下期刊到达情况,缺数等,那就相当于一个简单的物流,把数据集清楚就行了

如果你要做个功能强大点的系统,那可就要从长计议了
期刊分很多种,月刊最好处理,双月刊,旬刊,旬二刊,半年刊,年刊,半月刊,周刊,周二刊等,每一种的发行周期不同,出版日期也不同,所以,最好的方法是可以通过一个算法来实现报刊发行期的计算,那么,我们有了下面的报刊目录表
报刊目录表(基本元素):
报刊代号,报刊名称,报刊类别(报纸/杂志),报刊种类(月刊等),出版日期(?)

注:‘?’根据不同的‘报刊种类’纪录的数据略有不同,例如:报刊种类 = 月刊,那么出版日期就是月刊每个月发行的日期,只记日期,不用记月份;报刊代号 = 半月刊,那么出版日期就纪录2个数,分别是一个月的2次出版的日期,只记日期,不用记月份,等,以此类推

这样,我们就可以根据这个基本表,算出任意时间对应的期刊的期数(做个存储过程),就可以根据你的到货日期,计算是那一期的杂志了,反之亦可(可以计算整期未到)。
playyuer 2003-09-13
  • 打赏
  • 举报
回复
三张表:

期刊类型表:
类型ID(pk),每年总期数

期刊登记表:
期刊名称id(pk),期刊类型

期刊到达情况登记表:
期刊名称id(pk),期次(pk), 日期
playyuer 2003-09-13
  • 打赏
  • 举报
回复
三张表:

期刊类型表:
类型ID,每年总期数

期刊登记表:
期刊名称id,期刊类型

期刊到达情况登记表:
期刊名称id,期次, 日期
lishle 2003-09-13
  • 打赏
  • 举报
回复
谢谢你的思路 但我要记录不同周期的“期刊”的到达情况,要保存一年的数据,并且我在年底还可以计算每种期刊缺多少期没有到,分别是第几期。

呵呵 辛苦了
klbt 2003-09-13
  • 打赏
  • 举报
回复
主键可以用“刊号”,
可以建议一个“类别”列,内容是“周刊”“月刊”“半月刊”“季刊”“半年刊”等,
再建立一个“期数”列来记录是第几期。
为期刊名称建立一个“刊名”列;
此外还有如下列:

内容分类
编辑部
主编
定价
级别
页数
...

22,209

社区成员

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

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