关于 graph-schema
面向属性图数据库模式设计与审查的参考技能,适用于 Neo4j、Memgraph 和 Amazon Neptune 等。46 条规则涵盖建模决策、查询需求、数据完整性及模式演进,并附有 Cypher 示例。
主要功能
- 0146 条模式设计规则
- 02八个按优先级划分的类别
- 03包含正反例的 Cypher 示例
- 04约束与数据完整性指导
- 05扩展性和模式演进建议
适用场景
- 01根据领域需求设计图模式
- 02将关系模式转换为图模型
- 03审查或重构现有图模型
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill graph-schema安装后在 Claude Code 中输入/graph-schema确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonassets/templates/_template.mdreferences/_sections.mdanti-duplicate-data.mdanti-generic-relationships.mdanti-join-table-nodes.mdanti-over-modeling.mdanti-relational-porting.mdanti-string-encoded-structure.mdconstraint-existence.mdconstraint-index-traversals.mdconstraint-no-over-index.mdconstraint-node-key.mdconstraint-unique-identifiers.mdentity-avoid-god-nodes.mdentity-events.mdentity-identity-state.mdentity-multi-label.mdentity-reify-actions.mdentity-shared-values.mdentity-specific-labels.mdpattern-bipartite.mdpattern-fan-out.mdpattern-hierarchy.mdpattern-intermediary-nodes.mdpattern-linked-list.mdpattern-timeline-tree.mdprop-correct-data-types.mdprop-no-arrays-for-connections.md详细介绍
dot-skills 图数据库架构设计最佳实践
面向属性图(Neo4j、Memgraph、Amazon Neptune 等)的全面图数据库数据建模指南。包含 8 个类别中的 46 条规则,按建模影响从关键(实体分类、关系设计)到渐进(规模与演进)排序。每条规则都包含详细说明、通过 Cypher 示例对比错误与正确的模型,以及具体的影响说明。
理念: 首先确保数据建模正确,其次考虑性能。选择结构前,始终先问:“用户想要实现什么?”
适用场景
在以下情况下,请参考这些指南:
- 根据领域需求设计新的图数据库架构
- 将关系型架构转换为图模型
- 判断某个事物应该建模为节点、关系还是属性
- 检查现有图架构是否存在建模错误
- 重构查询繁琐或缓慢的图
- 规划架构演进和数据增长
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 实体分类 | CRITICAL | entity- |
| 2 | 关系设计 | CRITICAL | rel- |
| 3 | 属性放置 | HIGH | prop- |
| 4 | 查询驱动的细化 | HIGH | query- |
| 5 | 结构模式 | HIGH | pattern- |
| 6 | 反模式 | MEDIUM | anti- |
| 7 | 约束与完整性 | MEDIUM | constraint- |
| 8 | 规模与演进 | LOW-MEDIUM | scale- |
快速参考
1. 实体分类(CRITICAL)
entity-events- 将多参与者事件建模为一等节点entity-shared-values- 将共享的属性值提升为节点entity-specific-labels- 使用具体标签,而非通用标签entity-multi-label- 使用多个标签限定实体entity-identity-state- 将身份与可变状态分离entity-reify-actions- 将生命周期操作具体化为节点entity-avoid-god-nodes- 避免使用包罗万象的实体节点
2. 关系设计(CRITICAL)
rel-specific-types- 使用具体关系类型,而非通用类型rel-meaningful-direction- 选择语义明确的方向rel-naming-conventions- 关系类型遵循 UPPER_SNAKE_CASE 命名规范rel-no-redundant-reverse- 不要创建冗余的反向关系rel-properties-scope- 仅当数据描述连接时,才将其放在关系上rel-single-semantic- 每种语义含义使用一种关系类型rel-typed-over-filtered- 优先使用带类型的关系,而非“通用关系 + 属性筛选”
3. 属性放置(HIGH)
prop-no-foreign-keys- 不要将外键嵌入为属性prop-promote-to-node- 将频繁查询的值提升为节点prop-correct-data-types- 为属性使用合适的数据类型prop-no-arrays-for-connections- 需要建立关系时,不要使用属性数组prop-relationship-vs-node-data- 判断数据应属于关系还是节点
4. 查询驱动的优化(HIGH)
query-critical-traversals- 优先为最关键的遍历进行设计query-shortcut-relationships- 为频繁的多跳查询添加快捷关系query-denormalize-reads- 对读取密集型路径进行反规范化query-filter-by-rel-props- 使用关系属性筛选遍历query-test-before-deploy- 部署前使用真实查询测试模型
5. 结构模式(HIGH)
pattern-intermediary-nodes- 使用中间节点表示多实体关系pattern-hierarchy- 使用类别节点和深度关系对层级结构建模pattern-linked-list- 使用链表表示有序序列pattern-timeline-tree- 对时态数据应用时间线树pattern-fan-out- 使用扇出模式处理事件流和活动动态pattern-bipartite- 使用二分结构表示带上下文的多对多关系
6. 反模式(MEDIUM)
anti-join-table-nodes- 不要将关系型联结表建模为节点anti-generic-relationships- 不要使用通用的 RELATED_TO 或 CONNECTED 关系anti-relational-porting- 不要将关系型架构直接迁移到图中anti-over-modeling- 不要把所有东西都建模为节点anti-duplicate-data- 不要通过复制数据来代替创建关系anti-string-encoded-structure- 不要将结构化数据编码为分隔符分隔的字符串
7. 约束与完整性(MEDIUM)
constraint-unique-identifiers- 为自然标识符定义唯一性约束constraint-existence- 对必需属性使用存在性约束constraint-index-traversals- 为遍历入口点属性创建索引constraint-no-over-index- 不要过度创建索引——每个索引都会带来写入成本constraint-node-key- 使用复合节点键表示自然的多部分标识符
8. 规模与演进(LOW-MEDIUM)
scale-supernode-mitigation- 通过扇出或分区缓解超级节点问题scale-temporal-versioning- 将当前状态与历史状态分开scale-schema-migration- 规划标签和关系类型的演进scale-batch-refactoring- 使用 APOC 或批量查询进行架构重构scale-dense-node-detection- 监控并检测新出现的超级节点
使用方法
阅读各个参考文件,了解详细说明和代码示例:
参考文件
| 文件 | 描述 |
|---|---|
| references/_sections.md | 类别定义和排序 |
| assets/templates/_template.md | 新规则模板 |
| metadata.json | 版本和参考信息 |
评论
支持 Markdown