0

ミニ入会制度があります。

教授、科目、学生、成績、および学生がいる科目のテーブルがあります。

教授を追加するときは、教授 ID を入力します。しかし、profNOもあります。profNo は主キーです。その教授にはさらに科目を追加できるため、profNo は増加しますが、ID は同じままです。

問題: ここで、教授を追加したいときに、既に存在する教授 ID を入力すると、「教授 ID は既に存在します」というエラーが表示されますが、教授 ID は一意ではないという制限を設定したいと考えています。

では、写真をご覧ください。profNo が異なる同じ教授 ID があります。それは彼らが持っている主題のためです。教授に科目を追加すると、教授 ID が重複しました。教授を追加する際、既存のIDを入力するとエラーになることはありませんか? サンプル http://sphotos-e.ak.fbcdn.net/hphotos-ak-ash3/578472_162759700529875_718824031_n.jpg

4

2 に答える 2

1

はい、あなたが求めていることを行うことができます。新しい教授を挿入する前に、簡単なチェックを追加するだけです。

新しい教授が提出されたときの擬似コード:

if profID already exists (using a simple SQL query to check)
    allow the insert and continue
else
    don't insert, show a message to the user "That professor ID already exists"
endif

ただし、教授が複数の科目を持っているときに教授の詳細を何度も複製していると、非常に論理的なシステムのようには見えません。

次の DB 構造を検討してください。

テーブル:professors

フィールド: idfirstnamelastnamegender

テーブル:subjects

フィールド: idprofessoridsubjectnamesubjectcode

professorsこれにより、教授ごとに 1 つのレコードのみを保持し、科目テーブルについても同じレコードを保持します。professors新しい科目を挿入すると、データを複製せずにテーブルにリンクする教授 ID を入力します。

これは、データベースをより効率的にする単純な構造になりますが、システムが必要とする複雑さに応じて、さらに正規化する必要がある場合があります。たとえば、科目に複数の教授を含めることができる場合、科目テーブルに教授 ID を含めずに、professor_subject_associationフィールドを含む新しいテーブルを作成してprofessoridsubjectid複数の教授を科目にリンクします。

于 2012-10-12T14:42:51.573 に答える
0

ID列にUNIQUE INDEXを持たせます。MySQL マニュアルでそれらについて読んでください: MySQL でのインデックスの作成

于 2012-10-12T13:47:01.253 に答える