データベースに列または行を増やす方が良いですか? 出席表に学生の出席情報を入力しています。
条件 1: 1 週間の列と 3 つの講義の列を含める必要がありますが、16 週間あり、毎週 3 つの講義があるため、各学生の行数が増えています。??
条件 2: または、各学生の出席を個別に保存する 48 の講義列を追加する必要がありますか??
私は多くの答えを見ましたが、私はそれを得ることができません。前もって感謝します
データベースに列または行を増やす方が良いですか? 出席表に学生の出席情報を入力しています。
条件 1: 1 週間の列と 3 つの講義の列を含める必要がありますが、16 週間あり、毎週 3 つの講義があるため、各学生の行数が増えています。??
条件 2: または、各学生の出席を個別に保存する 48 の講義列を追加する必要がありますか??
私は多くの答えを見ましたが、私はそれを得ることができません。前もって感謝します
どちらもしないでください。学生用に 1 つのテーブル、講義用に 1 つのテーブル、およびそれらを結合するための交差テーブルを用意することをお勧めします。
列を増やしたり、行を増やしたりしないでください。データベース設計のリレーショナル代数に従うだけで、パフォーマンスと oop を向上させるために、標準のルールに従う必要があります。パフォーマンスのルールを破るには、経験と既知の理由が必要です。要件には、リレーショナル代数に基づくテーブル設計が 1 つだけ含まれている必要があります。-- サメ・ファコウア
エントリ (データベース テーブルの「行」である各エントリ) の「アイテム」(レクチャー、パーツ、ウィジェット、色) の数が既知であり、固定されている場合、それらのそれぞれに 1 つの列を持たない理由はありません。 「アイテム」。各行が非常に大きくなる可能性があるため、作業が非常に難しくなる可能性があります-例では48の講義-しかし、すべての「アイテム」は、行(この場合は学生)を照会することで簡単に見つけることができます。欲しかった。
通常、必要な主要エンティティが「学生」であり、「学生」エンティティごとに、その「学生」に関連付けられた追加のエンティティが多数存在する、異なるデータベース レイアウトがあります。これらは「講義」であり、各「講義」エンティティは「学生」と日付に関連付けられます。そのような状況では、データベースに「学生」を照会し、「結合」と呼ばれるリレーショナル データベース操作を使用して、「講義」テーブルに関連付けられた「学生」識別子を結合することにより、「講義」テーブルから学生の出席を検索します。 「学生」の名前で記録します。
この方法の利点は、追加のエンティティ (提出された宿題、テストまたは試験の成績など) を作成できることです。これらのエンティティを見つけて、同じ方法で学生に「結合」することもできます。これらのさまざまなエンティティを追加すると、元のテーブル (学生名と 48 の講義) を変更する代わりに、新しいテーブル (「宿題」、「テスト」、「試験」) を作成し、これらのテーブルには学生名が 1 つのフィールドとして含まれます。 、その他のフィールドとして日付と成績。
この方法の欠点は、不要な複雑さです。変更できないものを保持するためだけに追加のテーブルが本当に必要ですか? コースの週数はカレンダーとコーススケジュールによって固定されていますか? その決定を下す必要があります。「学生の出席」データベースを他のコースや他のスケジュールに適用する必要がある場合は、その複雑さを追加するしかありません。これが 1 つのコースの 1 回限りのタスクである場合、その複雑さは今後何の役にも立ちません。
Kyser が言ったように、リレーショナル データベース理論を勉強してください。