первичный ключ и внешний ключ - PullRequest
1 голос
/ 11 февраля 2012

У меня есть 3 таблицы

   Student    Loan    Book
 - StudentID  LoanID  BookID

, какие внешние ключи мне нужно установить, чтобы при присвоении имени студента найти все ссуды от этого студента и отобразить детали книги

Ответы [ 4 ]

6 голосов
/ 11 февраля 2012

Вот начало с такими неопределенными требованиями:

CREATE TABLE dbo.Students
(
  StudentID INT PRIMARY KEY
  -- , other columns about students
);

CREATE TABLE dbo.Loans
(
  LoanID    INT PRIMARY KEY,
  StudentID INT NOT NULL FOREIGN KEY REFERENCES dbo.Students(StudentID)
  -- , other columns about loans
);

CREATE TABLE dbo.Books
(
  BookID INT PRIMARY KEY,
  -- , other columns about books
);

CREATE TABLE dbo.StudentBooks
(
  StudentID INT NOT NULL FOREIGN KEY REFERENCES dbo.Students(StudentID),
  BookID    INT NOT NULL FOREIGN KEY REFERENCES dbo.Books(BookID)
);
3 голосов
/ 11 февраля 2012
Student
--------      
Studentid -PK

Loan
---------
Loanid  - PK
Studentid -FK


Book
-------
Bookid  -PK
Loanid   -FK
1 голос
/ 11 февраля 2012

вы должны использовать studentid в качестве внешнего ключа в обеих других таблицах ... потому что вы хотите искать на основе ученика. поэтому этот ключ должен войти в остальные таблицы

1 голос
/ 11 февраля 2012

Не уверен, какие у вас есть столбцы, при условии, что у вас есть StudentId в таблице учеников, он будет лучшим кандидатом на первичную в Student и иностранную в других двух таблицах.

...