2011-06-30 8 views
-2

私はアンケートウェブアプリケーションのデータベースを設計しています。調査は毎年実施されることになっており、人々は過去から何年にもわたって調査を受けることができます。アンケートの年をデータベースに保存する方法

データベースの構造は、この

大学の表のようなものです - >大学(子テーブル) - >コース(子テーブル)

I「は、特定の調査年度のコースのノーを見つける」のようなクエリを発行する必要があります。

すべてのデータベーステーブル(50+テーブル)に調査年を格納する必要がありますが、まっすぐに見えますが、これはデータが繰り返されるため正しいデザインではないと感じています。これについてあなたの考えをお伝えください。

おかげ

+0

テーブル構造を含めることはできますか?調査データはどこに保存されていますか? – StevieG

+0

テーブルには、大学、大学(大学への外部キーを持つ)、コース(大学への外部キーを持つ)に関する情報が含まれています。データはPostgresデータベースに保存されます。 – Sunny

+0

申し訳ありませんが、あなたの質問は本当に不明です。テーブルはどのように見えますか?調査表はありますか?調査と大学/カレッジ/コースなどとの関係は何ですか? – StevieG

答えて

0

移動し、この記事を読んで: http://en.wikipedia.org/wiki/Database_normalizationを。あなたが目指すべき通常の形式は、3番目の正規形(3NF)です。これにより、データの重複がなくなります。すべての「子」テーブルから調査年を削除することができます。ただし、調査年が親テーブルの主キーの一部である場合、子テーブルからフィールドを削除することはできません。単なるintフィールドを調査年のコンポジット主キーではなく、主キーとして使用してください。

+0

ご回答いただきありがとうございます。私は正規化を理解しており、年は主キーの一部ではありません。理論的には、年を親テーブルに格納し、ジョインクエリを使用して、年に基づいて子テーブルから結果を得ることができます。しかし、私は、結合テーブルを使用して複数レベルの子階層を持っており、複数の結合でクエリを発行することは事実上非常に困難になります。調査年と子テーブルをリンクするための解決策を探しています。 – Sunny

+0

多分、年ごとに別のDBがありますか? –

+0

はい、ユーザーは過去数年間フォームを記入できます。私はアプリケーションロジックに基づいて別々のDBをどのように維持するのか分かりません。ご協力いただきありがとうございます。 – Sunny

関連する問題