2016-07-11 11 views
0

私はこのような既存のDBスキーマを持っています。これらの2つのテーブルの間にあらゆる種類の参照整合性を作成する方法があります。関係の種類は何ですか?データベーステーブル間の関係

ID Name  CourseID 
------------------------ 
1 Student1  100023 
2 Student2  100023 
3 Student3  100024 
4 Student4  NULL 

Courseテーブル:それはちょうど2つのクラス

Studentテーブルで多くに多くである

ID CourseID CourseName 
-------------------------- 
1 100023  Course1 
2 100022  Course2 
3 100024  Course3 
4 100023  Course6 

IDは、両方のテーブルの主キーです。 CourseIDは関係の列です。

+3

がCourseIDで一意であるべきではありません持っている必要があり良いデザインではないと感じコーステーブル? –

+2

ここにはいくつかのアーキテクチャ上の課題があるようです。学生テーブルにCourseIDを持たないでください。ここには3つのテーブルが必要です。 –

+0

これは既存のスキーマです。私は3テーブルを持っていると言ったように同じ考えをしていた –

答えて

0

間違いなく。 Student.CourseIDとCourse.CourseIDの間に外部キー制約を作成できます。 SQL Server Management Studioを使用して直接行うことも、ALTER TABLE/ADD CONSTRAINTステートメントを使用することもできます。個人的には、Management Studioが使いやすいと思っています。

「SQLの外部キー制約」を検索し、W3Schools(またはそれに類するもの)が必要です。あなたが説明したとCourseIDは、Courseテーブルにユニークになると仮定すると、それは学生とコースの間に1 /ゼロ関係

に、多くの場合、またはコースと学生のテーブルの間に多くの関係にゼロ/ 1とすることができ、テーブルを探し

+0

ああスナップ。私はSean Lange/Zohar Peledが提起したスキーマの問題に気付かなかった。どんな種類の外部キーリンクを試みる前に、まずそれを扱います。 –

+0

私は外部キーを作成する方法を知っています。私はこの特定の問題に答えています。 –

+0

参考リンクを作成する方法があるかどうか尋ねられましたが、Course.CourseIDが一意ではなく(すべての種類の問題を引き起こすため)、Student.CourseIDがそうではないため多対多であるように見えます学生が複数のコースを持つことができると言ったようにユニークです。これを変える唯一の事は、あなたのデモテーブルにタイプミスがあり、10023がCourse.CourseIDに2回出現しないと思われる場合です。 –

0

が、私は、これはそれがコースや学生

ための3つのtbales

コーステーブル

Studentテーブル

ブリッジテーブル

関連する問題