2017-04-18 6 views
0

私はAccessに書き込む外部プログラムを使用しています。このプログラムは、電子フォームからデータを収集し、提出されたフォームのすべてのデータをAccessデータベースに書き込みます。しかし、問題が発生して多くの問題が発生し、データベースの速度が低下するという問題は、データベースに書き込むときにデータが正規化されないということです。外部プログラムが複数のレコードを1つのレコードに書き込むときに、データを正規化するにはどうすればよいですか?

フォームはその後、それはフィールド名とデータとして入力されたデータなどの質問を使用して1つのレコードとして、フォーム上のすべてを書き込みます。この

Name: John Doe 
DOb: April 1 1950 
SIN: 123456789 
Marital Status: Married 
Phone: 123456789 
Email: [email protected] 

ようになります。このような何か:

Name | DOB   | SIN  | Marital_Status | Phone | Email 
John Doe| April 11 1950| 123456789| Married  | 123456789| [email protected] 

これは、ここで例のフォームの問題の多くではありません参照してください、しかし、我々は我々のようなフィールドを持つテーブルで終わる約100の質問でフォームを持っています

Name|Date|Weather|Question1|Question2|Question3|Question4|...|Question100 

....など。 noobのよう

、私ははるかにそれが読み込まれるようにデータを操作するために労働組合のSQLクエリを使用していたので、やっていること:私はこれとによって得ることができた

Name|Date|Weather|Question1 
Name|Date|Weather|Question2 
Name|Date|Weather|Question3 
Name|Date|Weather|QuestionN 

が、それは真剣に鈍化しています私のデータベースをダウンし、今私は他の問題を抱えている。

外部プログラムがこのようなデータを書き込むときに、このデータを正規化するにはどうすればよいですか?プログラムが自分のAccessデータベースに書き込む方法を操作する必要はありません。

答えて

1

これを正しく実行すると、正規化されたテーブルを正規化する正しい方法です。ただし、非正規化に加えて正規化されたデータを格納することも考慮してください。データにアクセスするたびに100回のクエリを実行する必要はありません。 Name | Date |天気を別のテーブルに分割することを検討してください。なぜなら、1回の質問につき100回繰り返すからです。

SELECT * INTO MyTable From UnionQueryを実行するだけで、テーブルにユニオンクエリ結果を格納できます。他のプログラムからのインポートをこのクエリとマクロで結合します。

明らかに、これは理想的ではありません。理想的な修正は、最初の場所でデータを非正規化しないように外部プログラムを操作することです。

3

Access 2010にはevent-driven data macrosという機能があります。これは他のデータベースシステムのトリガーに似ています。私は個人的にそれらを使っている経験はありませんが、を作成できるはずです。新しい行が挿入されたときに実行するマクロを挿入した後。そのマクロの中で、あなたの質問を分割し、より正規化されたテーブルに挿入することができます。

+0

おそらく私より優れた解決策です。それは外部アプリケーションなので、データベースへのインターフェイスはイベントドリブンデータマクロをサポートしなければならないことに注意してください(ODBCは私が知る限り) –

+0

本当ですか?データがどのようにそこに到達したのかが重要なのはなぜですか? – Jerrad

+1

インターフェイスはマクロを起動する必要があるため(通常、UCanAccessなどの独自のデータベースエンジンを使用しない限り問題ありません)、マクロを実行するために必要なすべての操作を処理できる必要がありますマクロがユーザー定義関数に依存する場合は問題が発生します)。この記事をチェックしてください:https://www.pcreview.co.uk/threads/data-macros-dont-work-with-linked-tables。4046809 /問題の原因となる例については、 –

関連する問題