私はMySQLを使用しています。倍数テーブルの値にSQL制約を追加する方法
I以下の表にしている
User(UserID, UserTypeID, AccountID)
Account(AccountID, AccountTypeID)
Permission(PermissionID)
UserType(UserTypeID)
AccountType(AccountTypeID)
UserPermission(UserID, PermissionID)
PermissionRule(UserTypeID, AccountTypeID, PermissionID)
それはSQLの制約を以下に制限することは可能ですか? UserPermission
テーブルにアクセス許可を挿入すると、そのユーザーのUserTypeID
とそのユーザーのアカウントのAccountTypeID
とPermissionID
が挿入されたテーブルがPermissionRule
テーブルに存在する必要があります。
このような感じは、ビジネスルールやプロシージャー/トリガーの方がはるかに多いかもしれませんが、私が気づいていないSQL制約を使用して制限する方法があるのだろうかと思います。
私はHibernateでSpringデータを使用しています。だから、春や冬眠のアノテーションベースの制限も役に立ちます。
プライマリ/外部キー制約は、部分的に、あなたが望む行動になるだろう。このロジックをアプリケーション層から処理できますか? –
私は間違いなくアプリケーション層でこれを行うことができます。しかし、とにかくSQLからできることがあるのだろうかと思っています。特に、PermissionRuleで行を削除すると、UserPermissionから該当するエントリが削除されるのが好きです。私はそのような場合に手続きやトリガーを書かなければならないかもしれないと思います... – TechCrunch