[Jiemamy-dev:32] [RFC] 制約モデルの継承構造について

Back to archive index

MIYAMOTO Daisuke daisuke_m****@yahoo*****
2008年 6月 6日 (金) 12:23:56 JST


都元でっす。

意見募集メールには RFC タグ付けることにしました。
Request for Comment

というわけで本題。
DefinitionModelはTypeDefModelとなったのは昨日のSkypeログの通り。
(Porterの命名については引き続き募集中です)

で、現在、この状態でモデルの関係をフィールドのみで整理しています。

ところで、TypeDefModelは「制約」のリストを内部に持つことになります。
TypeDefModel は「foo VARCHAR(32) NOT NULL UNIQUE CHECK strlen(foo) > 5」みたいなの。

String name;
DataType type;
String size;	// えびちゃんにdisられたトコw
List<Constraint> constraints;

というフィールドになると思います。
RDBMSには NOT NULL, UNIQUE, PRIMARY KEY, CHECK という4種の制約がありますが、
(他にあったっけw) これらをConstraint型でどのようにあらわすか、に悩んでます。

「PK = UNIQUE + NOT_NULL + α」の制約と考えて、

interface Constraint
class NotNullConstrait implements Constraint
class UniqueConstraint implements Constraint
class PrimaryKeyConstrait extends NotNullConstrait, UniqueConstraint
class CheckConstraint implements Constraint

...って多重継承してるじゃんオイw かといって、NotNullとUniqueはインスタンスが
必要なのでinterfaceにする訳にはいかない。
あれ、NULL入れられるPKってあったっけ? 入れられるとしたら

interface Constraint
class NotNullConstrait implements Constraint
class UniqueConstraint implements Constraint
class PrimaryKeyConstrait extends UniqueConstraint
class CheckConstraint implements Constraint

かなぁ。っていうかもう、

interface Constraint
class NotNullConstrait implements Constraint
class UniqueConstraint implements Constraint
class PrimaryKeyConstrait implements Constraint
class CheckConstraint implements Constraint

と、フラットにしてしまうか?
っていうかそもそも Constraint は interface か? など。

ご意見募集。

# 間違って seasar-dev に誤爆しそうになった(汗
-- 
MIYAMOTO Daisuke
skype: cuervo1800




Jiemamy-dev メーリングリストの案内
Back to archive index