0

これは望ましい機能のように思えますが、外部キーが主キー (複合キー) の一部である場合にどうすればよいかわかりません。

このテーブルは、多対多のリレーションシップ参照User.idおよびAccess.idユーザーがアクセスできる参照機能用の単純な結合テーブルです。

Column |  References
user      user.id
access    access.id

したがって、各ユーザーおよび各アクセス レベルに多数のエントリが存在する可能性があります。「スーパーユーザー」のために物事を単純化するために、すべてのページにアクセスできることを意味するNULL値が必要でした (これは、テーブルaccess内の行を参照していない値を入力する方法を理解できる唯一の方法です)。access問題は、MySQL がNULL主キーの一部として値を許可しないことです。

主キーの問題を回避する方法はNULLありますか、または外部キーのすべての行 (または行なし) を参照する別の方法はありますか? これを回避する唯一の方法は、外部キーを無効にするか、テーブル内のすべての access.id に行を追加することです。どちらも望ましくないでしょう。

4

2 に答える 2

0

NULL は許可されており、user.id と組み合わせて一意に使用できると思います。しかし、これがこれを行う良い方法であるかどうかはわかりません。スーパーユーザー設定を列に保存して、ここよりもコードで使用できることを意味します。

于 2014-11-11T00:48:45.527 に答える
0

おそらく、ユーザーテーブルにスーパーユーザーフラグがあります。各スーパーユーザーのデカルト結合と利用可能なアクセス ID のセットを、これが必要なクエリに UNION することができます。

何をしているかによっては、スーパーユーザーのアクセスをデータベースに保存せず、コードで異なる方法で処理することもできます。つまり、一度 SU として確立したら、アクセス チェックを無視します。ただし、アプリケーションによって異なります。

于 2014-11-11T00:21:59.170 に答える