前提・実現したいこと
トーナメント表を表示したい場合、そのトーナメント表の情報をどのように保持しますか?
RDBに保存可能なデータ構造でみなさんの設計を知りたいです。
データ構造なので、言語は問いません。より良いデータ構造の定義を知りたいです。
定義例
保存する場合は、どちらもEntryテーブルとMatchテーブルを作成
例1: 前の試合を保持
typescript
1 2interface Entry{ 3 id: string 4 entryName: string 5} 6interface Match { 7 id: string 8 matchName: string 9 nodeId1: string 10 nodeId2: string 11} 12 13[ 14 {id: "E1", entryName: "田中太郎"} , {id: "E2", entryName: "鈴木一郎"}, 15 {id: "M1", matchName: "第一試合", nodeId1: "E1", nodeId2: "E2"}, 16 {id: "E3", entryName: "山田花子"} , {id: "E4", entryName: "佐藤櫻子"}, 17 {id: "M2", matchName: "第二試合", nodeId1: "E3", nodeId2: "E4"}, 18 {id: "M3", matchName: "決勝", nodeId1: "M1", nodeId2: "M2"}, 19] 20
例2: 次の試合を保持
Scala3
1 2case class Entry( 3 id: string, 4 entryName: string, 5 matchId: string 6) 7case class Match( 8 id: String 9 matchName: String 10 nextMatchId: Option[String] 11) 12 13List[Entry | Match]( 14 Entry("E1", "田中太郎", "M1"), Entry("E2", "鈴木一郎", "M1"), 15 Match("M1", "第一試合", Some("M3")), 16 Entry("E3", "山田花子", "M2") , Entry("E4", "佐藤櫻子", "M2"), 17 Match("M2", "第二試合", Some("M3")), 18 Match("M3", "決勝", None), 19) 20
例3: コメント頂いたナイーブツリー
python3
1from dataclasses import dataclass 2 3WINNER = 1 4LOSER = 2 5 6@dataclass 7class Node: 8 id: str 9 nextId: str 10 name: str 11 winner: int 12 13[ 14 Node("E1","M1","田中太郎", WINNER), 15 Node("E2","M1","鈴木一郎", LOSER), 16 Node("M1","M3","第一試合", 0), 17 Node("E3","M2","山田花子", 0), 18 Node("E4","M2","佐藤櫻子", 0), 19 Node("M2","M3","第二試合", 0), 20 Node("M3",None,"決勝", 0) 21] 22
例4: コメント頂いたそのままシリアライズ(型付き言語の場合)
c#
1public class Match { 2 public string Name {get; set;} 3 public Match[] Entries {get; set;} 4} 5 6new Match{ 7 Name = "決勝", 8 Entries = new Match[]{ 9 new Match { 10 Name = "第一試合", 11 Entries = new Match[]{ 12 new Match { 13 Name = "田中太郎", Entries = new Match[0] 14 }, 15 new Match { 16 Name = "鈴木一郎", Entries = new Match[0] 17 } 18 } 19 }, 20 new Match { 21 // 略 22 } 23 } 24} 25
回答2件
あなたの回答
tips
プレビュー