DBFlute -- {one-to-one}Tableの関係について(Unique制約技)


{one-to-one}Tableの表現には2種類あります。
<A>
PrimaryKeyが同じ値

<B>
ChildのParentへのFK-にUnique制約を付ける


「A」に関しては、DBFluteのSampleDB「LDB」の
「蔵書」・「蔵書ステータス」がまさにそれです。

「B」に関しては、DBFluteのSampleDB「LDB」の
「図書館利用者」・「ブラックリスト」がまさにそれです。


どちらもDBFluteは{one-to-one}であることを感知し、
「FKの参照的にはChildだけれどもまるでParentかのように」
振舞うことが可能です。

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<A>
final CollectionCB cb = new CollectionCB();
cb.setupSelect_CollectionStatusAsOne(); // COLLECTION left outer join COLLECTION_STATUS
...
final Collection entity = selectEntity(cb);
entity.getCollectionStatusAsOne();
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<B>
final LbUserCB cb = new LbUserCB();
cb.setupSelect_BlackListAsOne(); // LB_USER left outer join BLACK_LIST
...
final LbUser entity = selectEntity(cb);
entity.getBlackListAsOne();
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

「A」に関しては何も問題ないと思いますが、
「B」に関してはUnique制約を付けていなければなりません。
付いていない場合はDBAに頼んで付けて貰いましょう。
DBFluteはUnique制約大歓迎です。

// LDB
http://dbflute.sandbox.seasar.org/ldb/erd/index.html