首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一种电子笔记本的数据库设计

一种电子笔记本的数据库设计
EN

Stack Overflow用户
提问于 2009-07-29 20:24:51
回答 2查看 341关注 0票数 2

我有一个关于数据库设计的问题。我想创造一个电子笔记本或“一切桶”,为我自己的教育。我知道有很好的替代方案,比如EverNote、马戏团小马笔记本、开源KeepNotes或红色笔记本。但是,就像我说的,我想创造我自己的学习经验。

不过,我对数据库设计没有多少经验。我的问题是,这个设计应该是什么样子??表格、索引等等。我的想法是

  • 每本笔记本都有零个或更多的笔记或页数。
  • 每一页都有一个独特的标题和内容。除了“真实”内容之外,还会有元数据,比如创建日期、最后修改日期。
  • 每一页都属于一个或多个类别,即使类别是“无”。类别可能有额外的子类别。例如,在“计算机科学”类别下,可能有“编程语言”和“编译器设计”这样的子类别。
  • 每个页面都有与其相关的零或多个标记。它们将类似于类别,但并不完全相同。例如,一篇论文可能属于“编译器设计”类别,但可能被标记为作者名称、期刊名称、发表年份等。
  • 页面的内容应该包括可以保存文本、图像、链接等的HTML流。它们可能是相当大的数据块。将某些部分,如图像与文本分开存储是否有意义?(如果我也能显示PDF文档的内容,那就太好了。但这在这一点上并不是必需的。)
  • 如果一个页面能够包含对同一数据库中其他页面的交叉引用,比如wiki,那就更好了。

我希望能够按类别、标签、部分标题或全文进行搜索。我想这个程序可能有几个不同的数据库视图,显示类别、标签和标题,所以如果能够快速地对它们进行枚举,那就太好了。

那么,考虑到这些愿望,一个好的数据库会是什么样的呢?我假设将使用SQL数据库,但不承诺使用它--类似于数据库也是可以的。

提前感谢您的建议!

EN

回答 2

Stack Overflow用户

发布于 2009-07-29 20:43:49

从笔记本开始:

代码语言:javascript
复制
CREATE TABLE `notebook` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 64 ) NOT NULL ,
PRIMARY KEY ( `id` )
)

在笔记本上添加任何属性的字段。然后为其他事物创建类似的表,如页面、类别、标签等,以确保它们都有唯一的ID。

现在添加那些表的关系-一对一,一对多,多对多。一页将有一个notebook_id字段,因为它属于一个笔记本。页面可以属于许多类别,所以使用page_id和category_id创建一个链接表。

首先创建完美的数据结构,然后考虑查询它:)希望有一点帮助。

票数 1
EN

Stack Overflow用户

发布于 2013-10-28 03:22:29

我认为TiddlyWiki齐姆会满足您提到的要求。它们不像SQL风格的关系数据库那样使用“数据库”,但可以搜索、链接、标记、存储图片等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1202808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档