[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 メーリングリストの案内