赛事类型索引
联赛、杯赛与淘汰赛字段为何不能强行共用
按赛制建立独立字段族而非万能模板。 本文给出可复核步骤、状态边界、脱敏记录方法与复核路径。
联赛、杯赛和淘汰赛都包含队伍与时间,却不共享完整语义。联赛关注轮次、积分和赛季累计;杯赛可能先分组后出线;淘汰对阵还会出现首回合、次回合、总分与决胜规则。若把三者塞进同一张万能表,空值会被误认为缺漏,积分字段也可能被错误套给单场决胜。本图谱因此从赛制识别开始,再选择字段族。模式评审还要拿真实形态的空白表做演练:联赛记录不应出现聚合对阵,单场杯赛不应被要求第二回合。每个不适用字段都写出理由和规则节点,避免开发者日后把空值补成零。
当前没有经过来源核对的具体赛事记录,所有实例均为结构演练,现实适用性保持UNKNOWN。演练对象C7只展示:赛事类型为两回合淘汰,阶段为八强,当前场次为次回合;它不对应真实队伍或赛果。任何模式启用前都要绑定规则来源、适用赛季、观察时间和编辑版本,缺少一项就只能进入待核区。实际设计时还应为复合赛制建立转换账本。例如某杯赛先有四队小组,再进入单场淘汰,组内的积分与排名不能沿用到淘汰节点;转换事件只携带晋级实体、来源、规则版本和发生时间。若晋级名单本身有冲突,淘汰对阵保持待建,不用小组排名自动填充。另一类边界是双败、循环加淘汰或排名赛,它们不能因为名称含“淘汰”就套两回合字段。编辑需要先画出状态图,列每个节点允许进入、退出和重复的条件,再决定是否复用既有族。状态图缺规则文档时只是候选,不可生成现实数据。为防展示层误解,页面还要说明“无积分”是该阶段不适用,而“积分UNKNOWN”是应有资料尚未核。搜索索引同样保留family与stage,避免用户检索“第八轮”时混入八强对阵。结构迁移前先对旧记录运行干跑,统计新增UNKNOWN、不适用和关系失败的数量;任何默认补值都视为迁移缺陷。模式卡同时列出退出条件。
先以赛事问题划分字段族
联赛族回答一支队在长周期中的位置,最小结构包括赛季、轮次、已赛、积分与排名口径。分组杯赛族增加小组、组内名次、晋级线和阶段转换。纯淘汰族则关心对阵编号、回合、聚合结果、加时或其他决胜条件。字段是否出现由赛制问题决定,不以页面是否有空格决定。
建模会议先写每一族必须回答的五个用户问题,再从问题反推字段。若某字段不能支持任何问题,就不放入核心层;若两个字段名称相同但解释不同,就为它们分配不同命名空间。赛事类型不明时,schema_family写UNKNOWN,原始资料仍保存,但不生成积分、晋级或聚合解释。
- 字段族由用户问题驱动
- 同名异义使用独立命名空间
- 赛制未知不生成衍生结论
为联赛族定义累计关系
联赛记录需要区分单场事件与赛季汇总。单场层保存主客、开赛时间、状态和比分原值;汇总层保存计算口径、扣分事件、已赛场次与更新时间。排名不能仅由当前积分排序,因为同分规则、少赛和纪律决定可能改变解释。缺少排名口径时,展示积分原值但排名状态为UNKNOWN。
演练可用三支虚构队验证:一队少赛、一队有扣分、一队积分相同。测试目标不是算出现实名次,而是确认系统不会用默认净胜球规则。每次重算保留规则版本与输入快照。赛季跨年时起止日期分别记录,不能从年份标签推断完整范围。
- 单场与赛季汇总分层
- 排名依赖明确口径
- 重算保存输入和规则版本
处理杯赛的阶段转换
杯赛常在小组、附加和淘汰之间转换。模型以stage_id连接阶段,每阶段有自己的排序、晋级和比赛结构;从小组进入淘汰只新增转换事件,不覆盖小组记录。某支队晋级的原因可能来自名次、最佳第三名或资格调整,原因字段必须指向规则和来源。
来源只写“进入下一轮”却没有阶段名称时,目标阶段为UNKNOWN,不能根据日期猜八强或半决赛。取消一个阶段也作为规则版本变化保存。展示层将当前阶段与历史阶段分开,使读者看见赛事结构发生过变化,而不是误以为字段丢失。
- 阶段转换采用事件连接
- 晋级原因指向规则来源
- 目标阶段无证据写UNKNOWN
表达淘汰对阵和多回合关系
淘汰族使用tie_id把同一组对阵的场次连接起来,leg_no只描述回合次序,不代替阶段。每场保存本场结果,聚合层另存总分、适用规则和计算时间。单场延期不能把整组对阵直接标为延期,除非规则来源明确说明;两层状态必须分开。
若只有次回合资料而首回合缺失,仍可保存本场,但聚合结果为UNKNOWN。系统不得把缺失首回合当零比零。决胜方式可能随赛季改变,点球、加时或其他条件只在有规则证据时启用。演练数字不进入公开数据。
- 场次与对阵聚合分层
- 缺回合不以零补齐
- 决胜条件必须有版本证据
让不适用和未知拥有不同状态
联赛没有回合字段通常是不适用,淘汰记录缺少规则来源则是未知,两者不能都用空字符串。字段状态至少包括有值、合法空、UNKNOWN和不适用,并给出原因码。这样校验器不会因联赛缺总比分而报错,也不会让未知总比分看起来无需关注。
导出到不支持状态类型的表格时,另外输出value_state列,不能用零、短横线或默认文字替代业务值。前台为不适用提供定义,为UNKNOWN提供待补材料。统计时只对有值记录计算,未知数量单独披露,防止完整度被高估。
- 空值状态至少分四类
- 导出保留value_state
- 统计披露未知数量
用模式测试捕捉错误字段
每个字段族准备正向、空值和反例。联赛反例是出现leg_no,淘汰反例是无规则就生成积分,杯赛反例是阶段转换覆盖历史。测试数据采用虚构标识,预期结果写在规则旁。新增字段时必须说明它在哪些族有效,以及其他族为何不适用。
测试通过只证明结构规则在当前版本工作,不证明真实赛事资料正确。若规则来源未核,模式测试可以通过而事实状态仍UNKNOWN。测试运行保存时间、代码版本和失败记录;修复后旧失败不删除,便于确认哪一次改动改变了字段行为。
- 每族都有反例与空值测试
- 结构通过不等于事实正确
- 旧失败记录继续保留
发布字段族时明确覆盖边界
公开说明列出赛制族、字段版本、适用赛季、规则来源状态、已测反例和未支持模式。可以说明某模式如何组织资料,不能宣称它是通用权威结构。来源、赛季或决胜规则缺失时,相关栏位保持UNKNOWN,不用相似赛事填补。
本图谱为独立编辑资料,不代表目标实体,也不承诺数据实时完整。发现新赛制时先建立候选族,不直接修改既有字段含义。旧版本继续服务历史记录,新版本通过迁移清单逐项关联;读者因此能分辨结构演进与赛事事实变化。每张族卡还应写明不适用的相邻赛制。
- 公开页列适用赛季与未支持项
- 不宣称通用权威模式
- 新赛制先进入候选族


