[Seasar-user:17201] Re: 2 多対一関連と dto への詰め込みについての質問
Toshihiro Nakamura
[E-MAIL ADDRESS DELETED]
2009年 4月 7日 (火) 15:04:53 JST
中村(taedium)です。
> (1) ひとつのRoleに複数のuserが属するので、role<-OneToMany->users としたいのですが、s2-jdbc-genでは、users<-OneToMany->roleとして生成されます。
> #Usersエンティティの方にroleListが作成される
> 外部キーが設定されている方がManyになるとの規則があるとのことですが、今回の場合は存在しないuser_idが登録されることを防ぐためにroleの方に外部キーを設定しました。
> このような場合、正しくrole<-OneToMany->usersとするためにはどのようにすればいいでしょうか?
> #Usersエンティティの方にrole, RoleエンティティにuserList
> 手修正すればいいでしょうか?(前述の規則は問題無い?)
「存在しないuser_idが登録されることを防ぐためにroleの方に外部キーを設定
しました。」という理由がよくわかりませんでした。
なぜ、user側にroleへの外部キーを設定できないのでしょうか?
もしかするとuserとroleは多対多の関係でしょうか?
もしそうでしたら、関連テーブルをはさむようにするといいと思います。
関連テーブルをはさんで1対多、多対1の関連になります。
create table user (
user_id integer primary key,
user_name varchar(15) not null
);
create table user_role (
user_role_id integer primary key,
user_id integer not null,
role_id integer not null,
unique(user_id, role_id),
foreign key(user_id) references user(user_id),
foreign key(role_id) references role(role_id)
);
create table role (
role_id integer primary key,
role_name varchar(15) not null
);
--
Nakamura Toshihiro <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内