私は、さまざまな目的のためにいくつかのテーブルを持つMySQLバックエンドを備えたPHPで作業しているWebサイトを持っています。このサイトは、バグトラッカー、プロジェクト管理などのさまざまな部分または「環境」に基づいています。すべてのユーザーと関連する詳細を含む中央の「ユーザー」データベースが 1 つあります。
前述の「環境」のそれぞれには、独自のテーブル セットがあり、特定のフィールドでユーザー ID を指定できます。たとえば、bugtracker テーブルには、AssignedTo
バグが割り当てられたユーザーのユーザー ID を含む という列があります。
これらの「ユーザー ID」列のフィールド タイプ (AssignedTo
例のように) は、中央のユーザー テーブルのフィールドと同じUserId
で、署名されていない、ゼロで埋められた INT(5) フィールドです。
現在、このサイトのユーザーから、特定のユーザー ID フィールドでユーザー グループを指定できるようにしてほしいというリクエストが寄せられています。
もう一度AssignedTo
例を参照すると、特定のユーザーではなく、ユーザー グループにバグを割り当てることもできるはずです。
PHP スクリプトとデータベース レイアウトに関して、これを行う最善の方法は何ですか? UserId
ここで、これらすべてのフィールドを、中央のユーザー テーブルの INT(5)と同じタイプに設定しました。ただし、UserGroupId
UserGroups テーブルのフィールドは、異なる形式の INT(3) です。
このフィールドを INT(5) フィールドにすることもできますが、2 番目の問題は解決しません。AssignedTo
値が特定のユーザーを参照しているか、ユーザーグループを参照しているかを確認する方法です。
UserGroupId フィールドを 99999 から開始して下方向にカウントすることを考えていましたが、UserId フィールドは 00001 から開始して上方向にカウントするため、AssignedTo
9 で始まる場合はユーザーグループを参照していると想定します。しかし、これは私にはきれいな解決策のようには思えません...
より良いアイデアはありますか?ありがとう!