blish_time 有效时间段,由时间型和|构成的字符串,默认为'1975-1-1 12:00:00|3000-1-1 12:00:00')
Publish_day(表示周几,int,2^0=1 表示周一,2^1=2 表示周二, 2^2=4 表示 周三,......2^7=128 表 示星期天,0 为默认),
Publish_date(表示日期,由 1-31 构成并用|分开的字符串,‘0’为默认,如 2|5|15|31),
Publish_double (表选择奇偶日,int,1 表示奇数,2 表示偶数,0 为默认)
Publish_choice (表示选择以上哪几种组合,int,2^0=1 表示采用第一种控制,2^2 表示采用第二种控 制...)
设计思路:
设计思路:
1,要满足以上四个要求并能够让以上要求任意组合,可以选 4 个独立的表来存储不同 的要求,也可以 用 4 个字段来存储以上四个要求;选择 4 个不同的表来控制,表中的数据 满足数据原子性的要求, 但如 果这样, 发布一条内容需要连接 4 个表来查询,查询效率低, 所以我选择采取 4 个拼凑字段来进行控制 ;这样的话,我们可以将数据字段和控制字段整 合到一条记录中,查询数据的同时可以查询出控制字 段,尽管这样需要在程序中分割字符
串; 所以我采用(Publish_time Publish_day Publish_date choice)4 个字段来表示,另 外再采用 Publish_choice 表示选取哪种控制。
2,Publish_time 采用时间型和|构成的字符串,如 2002-1-1 10:20|2002-1-1 12:20|2007-2-2 08:20|2007-2-2 12:20.
程序读取的时候先把该字符串用|分开到一 个数组 a,其中 a[0]表示开始时间, a[1]表示 a[0]的结束时间,其中 a[2]表示开始时间, a[3]表示 a[2]的结束时间......;这样便可以满 足一条内容在多个时间串内有效。
3,Publish_day 为了提高效率,采用二进制位的方法控制,即 2^0=1 表示周一, 2^1=2 表示周二, 2^2=4 表示周三,......2^7=128 表示星期天。如果周一周
二周三 同时有效,则 Publish_day=2^0+2^1+2^2=7,这样的设计比拼凑字符串效率要高, 程序设计更简单。
4, Publish_date 如果像 Publish_day 一样采用二进制位的方法控制, 将达到 2^31, 数据太大, 有些 数据类型可能不支持, 所以采用|分开的字符串, ‘0’为默认,如 2|5|15|31), 程序读取采用|分开到 一个数组,再操作数组。
5,Publish_double 选择奇偶日情况只有两种,非奇即偶,用 1 表示奇数,2 表示偶 数
6,为了加强控制, 另外再设一个字段 Publish_choice 表示采取上叙哪些控制的组合; 原理如 3,都采 用二进制位表示。
7,为了防止程序读取 null 的时候出错,对每个字段都采用了默认值。
第三题.专家解答 第三题 专家解答
A 数据库表设计
表名:t_book (书籍表)
字段名
类型
缺省值
中文含义
约束
备注
id
Int
0
书籍编号
PRI
Name
Varchar(30)
书籍名称
Author
Varchar(20)
书籍作者
其他字段略,根据需要添加
表名:t_user (用户表)
字段名
类型
缺省值
中文含义
约束
备注
id
Int
0
用户编号
PRI
Name
Varchar(20)
用户
其他字段略,根据需要添加
表名:t_user_sort (用户自定义分类表)
字段名
类型
缺省值
中文含义
约束
备注
Id
Int
分类编号
PRI
Auto_i ncreme
nt
Name
Varchar(3 0)
分类名称
user_id
int
分类所属的用户 ID
外键
表名:t_mapping_sort_book (书籍分类匹配表)
字段名
类型
缺省值
中文含义
约束
备注
Book_id
Int
书籍编号
PRI
外键
Sort_id
int
分类编号
PRI
外键
byname
Varchar(3 0)
书籍别名
B.相关 SQL 语句 相关
用户 A 的所有分类
Select t_user_sort.name from t_user_sort, t_user where t_user_sort .user_id=t_user.id and t_user.name=’A’
查出来一列,是用户 A 自己定义的分类名称
Select t_book.name from t_book, t_user_sort, t_mapping_sort_book where t_user_sort. id= t_mapping_sort_book.sort_id and t_user_sort.user_id=t_user.id and t_user.name=’A’ and t_user_sort.name=’F’
说明:按我们的设计,指定分类 F 就能查询其下书籍信息了,但