タグ

閉包テーブルに関するmytechnoteのブックマーク (6)

  • SQL:閉包テーブルってなんぞや | Shiro's secret base

    どうも、シローです。 今回は閉包テーブルって何か、どういう時に使うかを伝えたいと思います。 閉包テーブルとは 閉包テーブルとは自己参照型のデータの参照部分を切り出したテーブルのことを言います。 具体的にはLINEのチャットでコメントに対するリプライの関係性を格納します。 ER図 コメントのデータ自体を管理するのがCommentsテーブルで コメントの祖先(ancestor)と子孫(descendant)を管理するのがTreePathsテーブルです。 TreePathsテーブルにはCommentsテーブルへの二つの外部キー(ancestor, descendant)を持っているのがポイントです。 ツリー構造を持つコメントデータの管理する場合 あるコメントに対してのリプライをできる機能を持つサービスで以下のようなツリー構造のコメントがあったとします。 これを閉包テーブルで表現すると。 Comm

    SQL:閉包テーブルってなんぞや | Shiro's secret base
  • 閉包表による木構造 - Tociyuki::Diary

    SQL で木構造を扱う方法の一つ、 閉包表を SQLite3 をターゲットとして試してみます。 閉包表 (Closure Table Tree Encoding) は、 ノードの主キーと、 そのノードを根とする部分木中の主キーの集合を関連付けます。 この関連付けを逆写像で眺めると、 経路列挙をカラムに文字列で格納するのではなく、 別の多対多の表に切り出したものになります。 そのため、 入れ子集合、 経路列挙の 2 つの視点から木構造を利用できるようになっています。 閉包表の名称でこの手法の利用例が説明されだしたのは 2010 年ぐらいからです。 参考 ⇒ The simplest(?) way to do tree-based queries in SQL (dirtSimple.org) ⇒ Moving Subtrees in Closure Table Hierarchies - P

    閉包表による木構造 - Tociyuki::Diary
  • 閉包テーブル(Closure Table)を試してみた - enomotodev’s blog

    はじめに SQLアンチパターンというを読んでいたら、再帰的なデータに対して『閉包テーブル(Closure Table)』という考え方があっったので、MySQL 5.6 で試してみました。 再帰的なデータとは、例えば上司を1人までもつことができ、部下は複数持つことができる、下記の組織図のようなツリー構造のデータのことを指します。 テーブル作成 それでは早速テーブルを作成してみましょう。 CREATE TABLE `Employees` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `TreePaths` ( `ancestor` bigint(20) N

    閉包テーブル(Closure Table)を試してみた - enomotodev’s blog
  • Pulse(パルス)| チームの現在地を知り、道標を示す

    Slackを通じてチームの価値観を浸透させ、メンバーの抱える課題や隠れた貢献を可視化。行動のベクトルを束ね、自律して同じ価値に向かうチームを生み出す、新しいモチベーション・マネージメントツールです。 Slackを通じてメンバーの抱えるモチベーションの課題や隠れた貢献を可視化。行動のベクトルを束ね、自律して同じ価値に向かうチームを生み出します。

    Pulse(パルス)| チームの現在地を知り、道標を示す
  • ActiveRecord(Rails)で効率的にツリー構造を扱うときに意識したいこと+開発例 | Wantedly Engineer Blog

    こんにちは、Wantedly で Webエンジニアをしている渡邉(@eityans) です。モチベーション・マネジメントサービスの Wantedly Pulse を開発しています。 Pulse(パルス)/ チームの状態 Slackを通じてチームの価値観を浸透させ、メンバーの抱える課題や隠れた貢献を可視化。行動のベクトルを束ね、自律して同じ価値に向かうチームを生み出す、新しいモチベーション・マネージメントツールです。 Slackを通じてメンバーの抱えるモチベーションの課題や隠れた貢献を可視化。行動のベクトルを束ね、自律して同じ価値に向かうチームを生み出します。 ... Pulseはチームの状態を可視化するツールです。会社全体をチームとして扱うこともできますが、従業員数の多い企業の場合、より小さなチームの状態を可視化したくなります。Pulseでは、上司部下の関係を設定することで、チームの設定が

    ActiveRecord(Rails)で効率的にツリー構造を扱うときに意識したいこと+開発例 | Wantedly Engineer Blog
  • 閉包テーブル (Closure Table) に順序を持たせソートした結果を取得する - Qiita

    はじめに 対象となる読者 ツリー構造のデータを RDB で扱うために閉包テーブル (Closure Table) を検討している人 閉包テーブルで順序を保持する方法を探している人 この記事を読んだ後できるようになること 閉包テーブルで順序を保持する方法がわかります 閉包テーブルから深さ優先探索 (前順・先行順・前置順・行きがけ順) でソートした結果を取得できます この方法を採用する場合に注意すべき点がわかります この記事を書いたときの環境 DB: PostgreSQL 9.6.1 なぜ閉包テーブル (Closure Table) を採用しようと思ったか 今まではツリー構造のデータを扱うときに入れ子集合 (Nested Set) を採用することが多かったのですが、このモデルの問題はノードを挿入するために隙間を開ける必要があり、挿入するノードの right より大きい left or/and

    閉包テーブル (Closure Table) に順序を持たせソートした結果を取得する - Qiita
  • 1