[SAStruts][S2JDBC][システム設計指針]

あるサイトを構築中で、現在権限制御部分のクラス設計DB設計をしています。

ログイン認証があるシステムでユーザの権限によって扱える機能が異なります。
いろんなシステムでこんなことすると思います。
現在このような権限系の実装をする際のベストプラクティスを探しています。

今まで私が考えたDB設計指針は、下記の通りです。
2通り考えましたが、下記の方がしっくりするので1つだけ記載します。

【指針】
■userテーブル
id
role_id
:
その他省略

■roleテーブル
(idとロール名以外は、機能名カラムが並ぶ)
id
role_name
user_insert (←ユーザ登録機能を表すカラム BOOL型)
user_update (←ユーザ更新機能を表すカラム BOOL型)
user_delete (←ユーザ削除機能を表すカラム BOOL型)
:

【デメリット】
機能追加された時は、roleテーブルにカラムを増やし、roleテーブルの
全ての行に対して増えたカラムに対して、権限設定しなければならない


私としては、このデメリットを解消したいのですが、なかなか良い方法
が思いつきません。
どなたか、ご自身が担当しているシステムで権限系クラス設計DB設計は
このようにやってるよ〜と教えていただける方いらっしゃいませんか?

参考URLだけでも結構ですので。。