0

私はAccessにかなり慣れていません。

正規化する必要がある DB テーブルがあります。ある人物についての情報があります。これらの人々は、私たちの職場のエリアへのアクセスを許可する権限があります。各人は、さまざまな領域を管理する権限を複数回付与することができます。もちろん、さまざまな人にさまざまな領域を管理する権限を付与することもできます。最初は認可と領域を一緒に含めようと試みたのですが、実際にはそのようにデータを繰り返していることに気付きました。いくつかの調査を行った後、これを行う最善の方法は4つのテーブルを作成することであると判断しました

tblPerson、tblPermission、tblArea、tblArea_Permission

tblArea_Permission は、tblPermission と tblArea の間の多対多の関係のための結合テーブルです (これは私が学んだばかりです)。リレーションシップタブでOKなテーブルリレーションシップを設定したようです。また、結合テーブルにレコードを追加するためのクエリも使用します。テーブルからレコードを取得するクエリを使用してこれを実行しようとすると、「関連するレコードがテーブル XXX に必要なため、レコードを追加または変更できません」というメッセージが表示されます。これは不可能に思えます。

参照整合性を強制しない DB と共存できる可能性があると判断し、それを取り除いて、2 つのレコードに結合された主キーを使用しました。それは機能しているように見えましたが、レコードがランダムに変更されることに気付きました。DBが壊れているに違いないと判断しました。DB の一部は正しく機能しているように見えるので、新しいデータベースから始めてテーブルと 1 つのフォームをインポートし、上記のように新しいテーブルの再構築を開始しました。同じエラーが発生しました。

どんな助けでも大歓迎です。私はいくつかの異なる本を読み、グーグルを使用しましたが、これに対処するものは何もありません。

4

1 に答える 1

1

個人がエリアの管理を許可されている場合は、persons_area テーブルが必要です。

PersonID ) Primary key
AreaID   )

その人が管理できる領域を示します。アクセス許可テーブルがどこから来ているのかわかりません。

area テーブルに ID があり、persons テーブルに ID がない限り、person_areas テーブルにレコードを追加することはできません。これらの ID のいずれかが欠落している場合、上記のエラーが発生します。

DB 設計に関するより関連性の高いコメントが必要な場合は、スキーマを投稿する必要があります。

于 2012-06-01T20:09:16.900 に答える