当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 11 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 我想做一个笔记管理系统, 大家给分析下应如何设计数据表呢.
帖子发表于 : 2011-05-11 22:50 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
我比较喜欢的笔记管理软件是zim. 它简单易用, 很多其他的笔记管理软件我都感觉太臃肿.

zim通过树形分层来管理笔记条目, 归好类后, 找到特定的条目还是很方便的. 但是单独通过分层归类来管理笔记我感觉还是不足的. 很多碎片很难归到一个合适的分类, 如果建立了过多的类别, 构造了过深的层次的话, 可能以后就不知到去哪寻找曾经记录的知识碎片了.

我比较喜欢的管理方式是: 建立一个词条时, 给它贴上多个标签, 比如建立了一个词条: "Sed 单行脚本快速参考", 同时给它贴上这样一些标签: "sed", "regex". 这样日后以 "regex" 进行搜索时, 该词条和其他应用了"regex"标签的词条就会被列出.

我选择使用 sqlite 把词条信息存入数据库. 现在考虑的是应如何设计数据表.

一个表应该不合适吧? 应为每个词条可以赋予任意多个标签, 如果只有一个表的话, 需要有一个 labels 的列, 里面存放一个逗号分割的字符串代表多个标签, 这样修改标签的时候比较麻烦, 检索效率也会受影响吧?

如果多个表应该如何设计呢?

希望有经验的达人给提供个好的设计方案, 我对数据库的优化设计不懂...

谢谢!


_________________
http://wonc.me/


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 我想做一个笔记管理系统, 大家给分析下应如何设计数据表呢.
帖子发表于 : 2011-05-12 0:17 

注册: 2009-07-25 19:23
帖子: 297
送出感谢: 3
接收感谢: 0 次
我记得以前看一个视频,那老师说这种情况可以用key value两个字段来解决,这样就可以设置无限多的标签了


_________________

Ubuntu 桌面培训- 全中文官方文档,含汉化截图,提供PDF


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 我想做一个笔记管理系统, 大家给分析下应如何设计数据表呢.
帖子发表于 : 2011-05-12 0:37 
头像

注册: 2008-10-12 12:58
帖子: 557
地址: 天津
送出感谢: 0 次
接收感谢: 0 次
现在用zim多了,的确遇到这个问题了,分层是方便,分类就无能为力了,有时侯要找一个纪录要一层层的去翻,不爽,但zim是方便,暂且没换的意思


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 我想做一个笔记管理系统, 大家给分析下应如何设计数据表呢.
帖子发表于 : 2011-05-13 16:59 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
scutdk 写道:
我记得以前看一个视频,那老师说这种情况可以用key value两个字段来解决,这样就可以设置无限多的标签了

谢谢啊!具体是怎么弄呢?


_________________
http://wonc.me/


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 我想做一个笔记管理系统, 大家给分析下应如何设计数据表呢.
帖子发表于 : 2011-07-12 17:38 
头像

注册: 2009-11-22 15:29
帖子: 317
送出感谢: 1
接收感谢: 0 次
:em11


_________________
时间就像一张网,你撒在那里,你的收获就在那里。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 我想做一个笔记管理系统, 大家给分析下应如何设计数据表呢.
帖子发表于 : 2011-08-19 23:30 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
sonofthewind 写道:
现在用zim多了,的确遇到这个问题了,分层是方便,分类就无能为力了,有时侯要找一个纪录要一层层的去翻,不爽,但zim是方便,暂且没换的意思


你觉得用直接 CMS 这样的东西 维护/发布 自己的知识怎么样呢?


_________________
http://wonc.me/


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 我想做一个笔记管理系统, 大家给分析下应如何设计数据表呢.
帖子发表于 : 2011-08-19 23:33 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
现在不是吹嘘nosql了嘛。
全都是key value了。

其实zim的全局搜索就够了。或者直接grep都够,就是文本嘛。

要tag,可以tiddlywiki。


_________________
● 鸣学


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 我想做一个笔记管理系统, 大家给分析下应如何设计数据表呢.
帖子发表于 : 2011-08-19 23:45 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
eexpress 写道:
现在不是吹嘘nosql了嘛。
全都是key value了。

其实zim的全局搜索就够了。或者直接grep都够,就是文本嘛。

要tag,可以tiddlywiki。


现在流行 Tag,没有 Tag是致命伤.


_________________
http://wonc.me/


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 我想做一个笔记管理系统, 大家给分析下应如何设计数据表呢.
帖子发表于 : 2011-08-19 23:48 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
潇洒走一回 写道:
eexpress 写道:
现在不是吹嘘nosql了嘛。
全都是key value了。

其实zim的全局搜索就够了。或者直接grep都够,就是文本嘛。

要tag,可以tiddlywiki。


现在流行 Tag,没有 Tag是致命伤.


神马tiddlywiki, 不透名.

我宁愿localhost跑一个wordpress. 当然我对wordpress也不满意,它重内容发布, 轻知识管理.

它不是CMS嘛, 我决定用Django做一个, 叫KMS.


_________________
http://wonc.me/


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 我想做一个笔记管理系统, 大家给分析下应如何设计数据表呢.
帖子发表于 : 2011-08-19 23:53 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
回到我问的问题, 那是很久以前发的, 今天偶尔来逛.

我太浮躁了, 这是数据库设计中很常见的问题, 就是多对多联系嘛!

在 Django 里面

代码:
tags = models.ManyToManyField(Tag)


_________________
http://wonc.me/


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 我想做一个笔记管理系统, 大家给分析下应如何设计数据表呢.
帖子发表于 : 2011-08-20 0:06 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
下面是我用 Django 设计的完整的 Entry 模型:

代码:
class Entry(BaseModel):
    title = models.CharField(max_length=200, unique=True, blank=False)
    public = models.BooleanField(default=True)
    content = models.TextField()
    mime = models.ForeignKey(Mime)
    category = models.TextField(default="unsorted")
    #category = models.ForeignKey(Category)
    tags = models.ManyToManyField(Tag)
    last_modified = models.DateTimeField(auto_now=True)

    def __unicode__(self):
        return self.title

    def apply_tags(self, tags):
        assert not isinstance(tags, str)
        for i in set(tags):
            if i.strip(): self.tags.add(Tag.objects.get_or_create(name=i)[0])
        return True

    def rm_tag(self, tag):
        try:
            self.tags.remove( Tag.objects.get(name=tag) )
        except Tag.DoesNotExist:
            pass    # ignore tags that does not exist.

        return True
   
    def html_output(self):
        mime = self.mime.name
        if mime == 'text/x-rst':
            output = rst2html(self.content, 'html_body')
        elif mime == 'text/plain':
            output = plain2html(self.content)
        else: output = self.content
        return output
    def summary(self):
        return HTMLSummary(self.html_output(), 200)

    class Meta(BaseModel.Meta):
        ordering = ['title']


_________________
http://wonc.me/


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 11 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译