Feature #1612

FOREIGN KEY制約に対応する

Added by Kouhei Sutou over 5 years ago. Updated over 5 years ago.

Status:担当者作業中Start date:01/19/2013
Priority:NormalDue date:
Assignee:Kentoku SHIBA% Done:

50%

Category:-
Target version:-

Description

h2. 動機

groongaはカラムの型として別のテーブルを指定する参照型という機能がある。この機能を使うことでテーブル間の関係を明示できる。参考: "参照型":http://groonga.org/ja/docs/tutorial/data.html#reference-types

一方、MySQLではテーブル間の関係をカラムの型で明示することができない。別のテーブルの主キーに対応するカラムは、別のテーブルの主キーと同じ型にし、JOINするときにどのように結びつけるかを指定する。しかし、MySQLはFOREIGN KEY制約を指定することでテーブル間の関係を明示できる(ようだ)。もし、mroongaでもFOREGIN KEY制約を使ってテーブル間の関係を指定できるのであれば、その情報をgroongaのスキーマにも反映したい。こうすることにより、mroongaで作ったgroongaのデータベースを(mroongaではなく)groongaで検索するときにテーブル間の関係を使った検索ができるからである。

h2. ゴール

mroongaでFOREGIN KEY制約付きで作ったデータベースに対して、groongaがテーブル間の関係を使った検索ができる。

h2. 実現方法案

まず、「動機」を実現するためにFOREGIN KEY制約を使えるのかを確認する。

使えるのであれば、FOREGIN KEY制約をつけたMySQLのカラムに対応するgroongaのカラムの型を参照型にする。

制約は参照型のテーブルを使えば実現できるはず。

groongaからテーブル間の参照を使った検索ができることを確認する。


Related issues

Related to Feature #1655: mroonga v3.01 Debian系パッケージを作成する 完了 02/26/2013
Related to Feature #1656: mroonga v3.01 Red Hat系パッケージを作成する 完了 02/26/2013

History

#1 Updated by Kentoku SHIBA over 5 years ago

  • Status changed from 新規 to 担当者作業中

#2 Updated by Kentoku SHIBA over 5 years ago

  • % Done changed from 0 to 50

まずは、FOREGIN KEY制約を設定した場合に、 groongaの参照型カラムを利用するように実装。 その際、 ・show create tableでのテーブル定義の出力。 ・information_schema.referential_constraintsの参照。 ・alter tableによるFKの変更。 ・rename tableによるテーブル名の変更。 に対応。

現時点では、チェック処理は未実装で、その他に以下の制約がある。 ・必ず参照先テーブルはPKであり、マルチカラムでない必要がある。 ・制約名は、何を指定しても参照元カラム名に変更される。 ・「ON DELETE」「ON UPDATE」には、何を指定しても「RESTRICT」に変更される。

#3 Updated by Kentoku SHIBA over 5 years ago

現在のところ、MySQL 5.6 限定で利用可能。

Also available in: Atom PDF