2017-09-28 19 views
0

小さなプロジェクトでは、私は、テレビ番組のキャラクターを格納するデータベースをMicrosoft Access 2016で作成することを検討していました。彼らが行った可能性のあるすべてのエピソードや、どのようなエピソードに最も金髪のものがあるかなどを見ることができます。特定のフィールドに複数の値を持つアクセスデータベースを作成する

私は、テーブルをセットアップしてエピソードを録画する方法を考えています。大部分のシナリオでは、多値フィールドは貧弱なアイデアだと多くの人が言っています。

私は似ているかもしれないいくつかの簡単な表を見ていた:

CHARACTER:CharacterName(PK)、HairColour、性別

EPISODE:EpisodeNumber(PK)、EpisodeDate、CharacterName(FK)

ここでの問題は、明らかにほとんどのキャラクターが複数のエピソードに出現し、すべてのエピソードは1つ以上のキャラクターを持つことは明らかです。この多対多の関係を解決する良い方法は何でしょうか?

答えて

0

私は主キーとして文字名を使用しません - 私は現時点では思うことができませんが、同じ名前を持つ異なる文字を持つショーになることがあります。私の頭の上から離れて....あなたはスタートレックでキャプテンカークとフライングドクターでキャプテンカークを持つことができました。

多対多リレーションシップを解決するには、それを保持するための3番目のテーブルが必要です。表には、キャラクターとエピソードの主キーを参照する2つの外部キーがあり、両方のフィールドが複合表の主キーを構成します。だから、

CharacterName | Episode 
    1  | 1 
    1  | 2 
    2  | 1 
    2  | 2 

あなたはその後、これに基づいて各テーブルから詳細を引くことができます。

SELECT Character.CharacterName, Episode.EpisodeNumber 
FROM (Character INNER JOIN Joining_Tbl ON Character.CharacterName = Joining_Tbl.CharacterName) 
        INNER JOIN Episode ON Joining_Tbl.EpisodeNumber = Episode.EpisodeNumber 
WHERE Character.HairColour = 'Blonde' 

- エピソードテーブルキャラクターの詳細が含まれていません。そのエピソードに固有の情報(エピソード番号、日付、名前)のみが含まれています。シリーズ番号をこのテーブルに追加することができます。エピソードに固有のものではありませんが、変更されず、シリーズ情報を含むテーブルにリンクする外部キーとして使用できます。

0

すべてのテーブルのプライマリキーは、自動番号フィールドにする必要があります。
複数の値フィールドは使用しないでください。

答えの一部は、作成するユーザーインターフェイスの経験によって決まります。最後のCharacterテーブルは選択リストです。

エピソードテーブルは、メインフォームの基本/レコードソースである必要があります。次に別のテーブルEpisodeCharacterが必要です。この新しいテーブルは、メインフォームのサブフォームの基礎であり、Characterテーブルのレコードを呼び出すように設定されています。

文字テーブルを作成する必要があります。その後、エピソードでは、エピソードを選択するかレコードを作成し、EpisodeCharacterはそれに対する多くのテーブルです。

www.CahabaData.com

関連する問題