-1

私はmyphpadminを使用しています

表 1

                   id exam_name         month  year
                   ------------------------------------
                    1 universityexam   january  2013

ここでは、exam_name、月と年が主キーです

表 2

                   id exam_name                     course_name
                   ----------------------------------------------

                   1  universityexam january 2013     bsc

ここで、exam_name はテーブル 1 のすべての列への外部キーです

4

1 に答える 1

0

問題が何であるかはわかっていると思いますが、詳細の欠如により誤解が生じた場合はご容赦ください。

あなたができるようにしたいのは、2 つのテーブルをリンクすることですが、間違った方法で行っています。table1 の ID を table2 の FK として使用する必要があります。あなたがしていることは、不必要にデータを複製することです。

このように、1 つの試験を複数のコースにリンクしたり、1 つのコースを複数の試験にリンクしたりすることができます。

次のようにデータベースを設計します。

create table courses (degree_id int,degree_name varchar(128))
create table exam (exam_id int,exam_name varchar(128))
create table exam_date(exam_date_id SERIAL,exam_id int,date timestamp)
create table exam_date_course(edc_id SERIAL,exam_date_id BIGINT,degree_id INT)

これにより、データの重複がほとんどまたはまったくない状態で、試験を日付、コースを試験などに非常に自由にリンクできます (Google の第 4 正規形を参照)。

于 2013-08-02T08:10:22.017 に答える