2012-02-11 217 views
1

我有3个表主键和外键

Student Loan Book 
- StudentID LoanID BookID 

外国键做我需要设置这样给学生名字时,从学生搜索所有贷款,并显示书籍详细

+0

我假设学生<->贷款为1:1本,但学生<->书籍是多方面的:有多少? – 2012-02-11 04:42:15

+1

这取决于。你需要决定这些关系是如何工作的,这将决定桌子的设计。贷款只能有一本书还是多本书?学生和贷款之间的关系也是同样的问题。这些东西应该包含在您的帖子中,以帮助人们了解您尝试解决的问题。 – nolt2232 2012-02-11 04:46:44

回答

6

下面是用这种含糊的要求开始:

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) 
); 
1

不确定你有什么专栏,假设你在学生表中有studentId,那么它将成为Student和Primary两个表中的最佳人选。

1

你,因为你要对学生的基础上,搜索使用studentid在两个其他表的外键...。所以这个关键应该去剩余的表中

3
Student 
--------  
Studentid -PK 

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


Book 
------- 
Bookid -PK 
Loanid -FK 
+0

为什么一本书与贷款有关? – 2012-02-11 04:44:13

+0

学生拿出贷款。贷款可能包含一到多本书。在我看来,这是一个有效的模型。 – nolt2232 2012-02-11 04:54:18

+0

有趣...我假设一个学生获得贷款,并购买书籍,我不知道我是否听说过贷款官员想知道你买了什么书的情况。 – 2012-02-11 05:00:16