文章阅读
认识JDiy树形节点表的数据库字段
文章类别: JDiy建站平台教程  更新日期: 2013-08-14 11:26:46.0  点击次数:4843
  前面的文章中,我们对输入视图进行设置时,接触到了JDiy数据节点表的字段都是由t0, t1, t2, ....t15这些字段组成,本文主要讲解JDiy的树形节点表中的各字段的使用方式。
  让我们先来看看前面文章中创建的新闻输入视图的相关配置页面:
JDiy输入视图设置
(图1)
JDIy输入视图字段设置
图2
  在上图1中存在叫做“系统字段”的配置区域,在上图2中,大家看“使用字段”中会列出t0到t15共计十六个字段(注意,使用过之后的字段不会再在这个下拉菜单中列出)。
这两处配置的字段信息均对应的存储在树形节点表中。同时我们打开数据库管理软件,随便打开一张由JDiy系统生成的树形节点表,我们也会看到表中包含这些字段,如下图:
JDiy树形节点表字段结构图
图3
  下表列出了这些字段的详细说明。
JDiy数据库字段说明:
特别注明:
1. 下表的字段类型指的MySQL数据库中的字段类型,如果您使用的数据库引擎不是MySQL,根据您的数据库类型,相关字段类型的定义可能稍有区别。
2. 为了描述字段的作用,表格中的说明部分使用了JDiy开发代码片段,如果大家看不明白没关系,我们将在后面JDiy开发者教程中去详细讲解这些代码;但如果您对这些代码感兴趣的话,也可以先参考一下我们相关的JDiy-API文档。
字段名类型详细说明
t0varchar(128)
  这是表的名称引用字段,任意一个输入视图默认都会指定这个字段并且不可以在输入视图中删除。
  例如:在“新闻”库中,您可以用这个字段存储“新闻标题”;在“产品”库中,您可以用这个字段存储“产品名称”,在“会员”库中,您可以用它存储“会员帐号”,总之,它被标识为一条记录的“名称”,您可以在很多地方引用它。
id char(10)
  这是数据记录的主键字段。它是10位定长的char字符串,您可以在JDiy程序中通过net.jdiy.core.Rs类的newId()静态方法来生成一个主键值。系统保证此ID在整库中具有唯一性(注意是整库而不是整表,这一点非常重要)。
  同时,JDiy系统中可以为一条记录存储任意多个XML或者文件附件数据,这些XML或文件数据都是通过这个唯一的ID进行关联的(我们将在后面的XML与文件字段相关文章教程中说明)。
我们可以在JDiy的数据库操作Dao中通过ID来返回单条数据,例如:
Rs rs = dao.rs(new Args("mytable", "id='ys12345678' ")); //其中ys12345678为一个id值(下同)
tidchar(10)
  用于存储当前信息的“上级栏目”,即它的“父节点”,对应于父节点的ID值。如果当前信息是一个顶级节点,那么它的tid值将是'0000000000'(即10个0)
如果我们知道一个栏目的ID,需要返回该栏目的子信息,可就可以通过这个字段进行查询,例如:
Ls ls=dao.ls(new Args("mytable", "tid='ys12345678' "));
frame varchar(255)
  用于存储当前信息对应的节点层及树路径,它是其各祖父级节点的ID值以小数点分隔的字符串(例如:“.id1.id2.id3.”),如果当前信息是一个顶级节点,则frame值将是'.'(即一个小数点)
  例如“产品中心”有很多子类别,子类别中又有很多产品,我们要把所有产品查询出来(注意因为有产品子类别,所以产品的tid值根据这些子类别的不同而并不一样),此时我们可以通过顶级类别的ID并使用frame字段进行模糊查询,如:
Ls allpro = dao.ls(new Args("mytable", "frame like '%.ys12345678.%' "));
isc bit(1)
(见上图1中的“输入类型”,即用于设定此字段的值。)
  用于存储信息的类型,即标识是“树形节点”(用1表示)、还是“普通内容”(用0表示)。
  例如我们想查询某个栏目下面的子栏目,可以像这样查询:
Ls ls = dao.ls(new Args("mytable", "tid='ys12345678' AND isc=1"));
  再如我们如果只想查询内容而非栏目:
Ls ls = dao.ls(new Args("mytable", "tid='ys12345678' AND isc=0"));
sort int
  用于信息的前后排序,如果在视图中未设置(见上图1中的“排序索引”),其默认值为100。
如果需要排序,您应该在前台输出信息时,设置排序方式为先sort升序,再时间降序。
如代码:
Ls news = dao.ls(new Args("news", "tid='ys12345678' ORDER BY sort, dt1 DESC"));
dt1 datetime  用于存储(但不限于)信息的发布时间(即上图1中的“发布时间”配置)。
dt2 datetime  用于存储(但不限于)信息的更新时间(即上图1中的“更新时间”配置)。
hits int  用于存储信息的“点击次数”或“访问次数”,如果您需要统计“次数”,请在信息展示页作如下更新
例如: rs.set("hits", rs.getInt("hits")+1);  dao.save(rs);
owner char(10)  用于记录信息的提交者,通过JDiy开发平台创建的输入视图,用户在保存数据时,系统将自动记录登录者的ID到这个owner字段中。
upf text  这是以前旧版本遗留下来的现在己无用的字段,新版本的jdiy已不再包含这个字段,您可以将这个字段删除.
t1-t14 varchar(128)   t0到t14这些字段,是数据库中真正存储用户数据的地方,您可以针对每个输入视图去设置字段存储的数据内容。特别注意,这些字段的最大长度都是128个字符,对于有可能超过128个字符长度的数据,请不要存储在这些字段中。
t15 mediumtext   t15 这个字段是系统预留的长文本数据存储区域,例如新闻的正文内容,产品的详细介绍等。这也是我们前几篇文章中特别要求大家必须使用t15存储正文内容的原因!
关于树形节点表的两点疑问:
疑问一、
  我想,在讲解了JDiy树形表的数据库字段(特别是最后两个,即以t字开头的那些字段),大家可能都有一个共同的疑问,那就是在实际需求中,往往我们有很多文本信息(即不止1个字段)的长度要远远超过128个字符,而JDiy的树型节点表的数据存储区域(t0-t15)仅仅只设置了一个t15是长文本的字段,其它字段全是最大长度为128个字符,未免太不合理了吧?另外,有文件附件又怎么办呢?
  那么JDiy要告诉大家的就是,JDiy的数据存储并不只局限于在数据库中,我们还有XML字段/文件字段,实际上您可以向输入视图中设置任意多个XML字段和文件字段(XML字段可以接受任意长度的字符串,同时通过JDiy框架提供的API,您可以像读取普通数据库字段那样方便地读取XML和文件,我们将在后面的章节中对这些详细介绍)
疑问二、
  受现有数据库信息存储思想的限制,有些人可能还有疑问,JDiy的这些字段全定义为varchar类型,那如果我还有其它如数字,时间,浮点值,布尔值等信息要存储又怎么办呢?可能作为程序员,大家的思维比较严谨,无可厚非。其实JDiy并不关心数据是什么类型的,如果大家熟练了JDiy-API,您会发现,JDiy的数据类型转换是如此之方便,因此,这个问题我们暂且搁置在这儿,大家只要明白,树形节点表同样可以存储数字,日期时间,布尔值这些就行了。实在不行,您还可以将JDiy树形节点表弃之不用,您完全可以手工创建符合您需要的数据表并将其注册到JDiy平台中,JDiy同样可以争对这样的表来配置相关的视图进行数据管理,当然,这都是题外话了,我们后面的文章中也会让大家进一步去认识JDiy开发者平台的独特之处。
[ 上一篇 JDiy树形节点表之带栏目选择的输入视图   下一篇 在JDiy的输入视图中使用XML字段 ]
鄂ICP备18006629号-1       鄂公网安备 42050302000160号


技术支持QQ:39886616 QQ群:7759217
联系JDiy作者: ziquee java/javascript WEB编程
E-mail:ziquee@abcbcd.com http://189.cn
*尊姓大名:

*电子邮箱:

*QQ号码:

*留言内容:
提交留言
取消
loading...
注:带"*"的为必填项。请如实填写您的E-mail或QQ号码以便我们能与您取得联系。