Description
In what scenarios do you need this feature?
现在思源中的块属性有三类:内置、数据库、自定义属性。但是到这个阶段我认为思源的属性已经有点复杂且难以管理了,希望借此抛砖引玉(换句话说就是多来些大佬讨论吧,求求了!)
在体验其他笔记软件的过程中,按照它们的使用方式,我个人大致将这些笔记软件的属性分为了全局属性(工作空间属性)和局部属性(数据库属性)。以anytype、tana、未来的logseq db还有obsidian(obsidian暂时只有属性没有数据库)为代表的笔记软件选择了全局属性作为方案,而notion等软件则选择了数据库属性作为方案。这两者在一定程度上可以互补。
全局属性可以做到多个数据库共用一个属性和属性值(tana),甚至更进一步,像anytype一样,每个关系(属性)都是一个数据库,直接在文档里用就好。这个方案的优点非常明显,例如我有一个专用于查询的模板属性,我可以在这个属性中预先填入多个模板以待日后直接使用,当我发现某一个模板有更好的方案时,我只需要修改这个属性值,所有使用该模板属性和属性值的条目都会随之生效,还可以通过属性反向查找出所有使用它的数据库和条目,这些功能通过关联数据库主键的方式很难做到。另外我也建议将自定义属性和标签视为全局属性来处理,自定义属性现在只能依靠社区插件来解决复用的问题,而标签其实也不应该被放弃,因为它能被导出,这一点是目前的多选做不到的。
不过这个方案也有一些缺点,一些不希望看到的零碎属性也会被当作全局属性夹杂在其中,而这恰恰是局部属性的优点,只能在创建它的数据库中维护和使用,互不影响干扰,但在其他方面的灵活性很低。
Describe the optimal solution
不论是思源的内容块还是本体的其他功能,在使用上都非常灵活,就像积木一样可以自己搭建起适合自己的流程和内容。数据库也可以稍微灵活些
考虑到数据库已经推出一段时间了,且全局属性实际上和自定义属性的存在有些冲突。
我想到的解决办法是
- 将自定义属性视为全局属性的一份子,并且可以带有属性类型。
- 在属性的弹出面板中添加全局属性开关和在DOM中显示的开关。只有开启在DOM中显示的开关才能在DOM中显示,这也解决了DOM结构里中文属性名的问题。
今天的输出就写到这里吧,晚上继续,人已经写晕了,D大先别关issue!
Describe the candidate solution
No response
Other information
No response
Activity
TCOTC commentedon Nov 12, 2024
我觉得最合适的方法是支持在数据库字段里获取内置属性和自定义属性然后编辑,这种情况下字段名不等于属性名,属性名也不需要支持中文了。
AdachiQ commentedon Nov 12, 2024
https://ld246.com/article/1695732053015
https://ld246.com/article/1714489027667
附议,向anytype学习!
KuiyueRO commentedon Nov 12, 2024
这样可以提高灵活性,数据库由局部属性和全局属性共同构建,可以降低属性维护的困难度以及重复输入的频率。另外将书签、标签等内置属性视为全局属性时,甚至可以将书签、标签面板融合到一个专门的属性反查条目的面板中,提供筛选、搜索等操作。
KuiyueRO commentedon Nov 12, 2024
我有一点不同的看法,tana的supertag只是叫supertag,虽然是通过
#
进行输入,但它实际上是一个通过全局属性组织起来的数据库的视图,在选中对应tag后这个tag就不再是行内文本了,而是以独立元素的形式被定死在块末尾,与思源目前的添加到数据库类似,并不能通过退格键直接进行修改。换句话说tana选择了打标签作为
添加到数据库
的快捷方式,当然tana的数据库和思源的数据库还是有许多区别的。可以参考下我这篇回答🙏🙏:#11371 (comment)
以上回答仅供参考,也不是说tana就这么简单哈。
SaXz2 commentedon Nov 12, 2024
添加到数据库
和#标签#
这两个功能就不可能是一样的, 改成 SuperTags 虽然都是数据库的形式,但是 SuperTags 是为了让标签功能更强大,他不应该取代
添加到数据库
混为一谈,功能定位也不一样KuiyueRO commentedon Nov 12, 2024
我好像知道我俩的分歧在哪里了,Sa以为我提这个FR是想把数据库改成动态的。
其实我在这个FR下,提的是
所以其实不太冲突。
SaXz2 commentedon Nov 12, 2024
刚才理解错了这里重新总结一下需求
1.自定义属性支持中文名
2.数据库支持调用自定义属性为一列
3.自定义属性应该有多种类型(复选框,资源,多选,单选)
4.数据库被调用的属性应该支持编辑
KuiyueRO commentedon Nov 13, 2024
我也总结一下这个FR具体的需求,主要需求集中在属性而非数据库,个人认为这样改动带来的收益是非常高的。
考虑的方面
在提议时我考虑了下面这些内容:
主要提议
我的主要提议是将内置、数据库、自定义属性合一,只根据作用范围的不同分为全局属性(工作空间)和局部属性(数据库)。
设为全局属性
后,对应列的属性值与全局属性的属性值进行同步增删修改在 DOM 中显示(作为 CSS 选择器)
,这个交给用户自行决定。muhanstudio commentedon Nov 14, 2024
支持一下,整合属性确实方便维护,减少四处跑的压力,也方便直接批量管理文档元数据
88250 commentedon Nov 15, 2024
感谢提议,但是大改是不太可能了,其中有个复杂的问题是一个块可以绑定多个库,这种情况下属性的作用域管理非常困难,所以我们是通过模板字段解决单向全局属性场景的,这也是复杂度和扩展性上面权衡的结果。
KuiyueRO commentedon Nov 16, 2024
感谢D大回复,但我不是特别理解为什么绑定多个库会让属性的作用域管理非常困难。在提议之初就考虑到数据库的实现非常复杂且推出已经有一年的时间,任何大改都是不现实的,因此这个FR其实是关于属性而非数据库的。
换句话说,对数据库的改动仅限于:
而这个FR更多的是希望
总之老大还是考虑一下吧😁😎
[-]对数据库属性的优化建议[/-][+]对属性的优化建议[/+]wy16W2pIilK1xgqN commentedon Dec 9, 2024
真的很需要全局数据库,有没有这个功能,完全是质的变化。
MisakaImouto8912 commentedon Dec 31, 2024
支持
sorcierdw commentedon Jan 7, 2025
就目前的使用来看,自定义属性和数据库属性有种割裂感,比如markdown的yaml导入思源生成的是自定义属性,而数据库中能编辑操作的是数据库属性。 假设用户从自带的md文件迁移入思源,想维护一个基于原来md的yaml内容的数据库,如果属性之间能连通的话体验会更好。
sorcierdw commentedon Jan 7, 2025
不知道是否涉及全局属性的功能,但如果有以下功能的完善,相信会有更好的体验:
1,三种属性在md文件(yaml)的导入和导出
2,三种属性在笔记页面有更好的展示
3,三种属性在数据库中的可同步编辑
4,属性上有争议方面的可以交给用户自己选择
pureTrue commentedon Jan 20, 2025
确实,看大伙搁链滴整JB没逑用的数据库视图,还不如统一属性呢
Tisamn commentedon Jan 21, 2025
顶,支持
shuojie819 commentedon Mar 16, 2025
顶一个,支持一下,全局属性真的很重要(可以自己选择哪个字段作为全局属性,哪个字段作为独立的属性就更棒了)
yuanjieyu commentedon May 23, 2025
支持全局属性
Jiangshuon commentedon May 23, 2025
顶顶
Jiangshuon commentedon Jun 7, 2025
补充坛友需求 https://ld246.com/article/1748790153602
Jiangshuon commentedon Jun 7, 2025
如上所说,优化自定义属性以达到复用属性的目的是不是更好
Jiangshuon commentedon Jun 7, 2025
一直在高频使用数据库,属性复用问题头疼死了,老是要重复输入属性。