我对数据库相当陌生,并且一直在使用书籍和教程来学习数据库的Chen符号。
我正在研究一个例子,其中我的一个实体图有两种强实体连接到弱实体的情况。
这意味着弱实体将拥有2个外键:来自两个强实体的主键。
以下是我要解决的设计问题图: http://imgur.com/GXa0KSP
根据我的新手理解,这是不正确的,它在创建数据库表时无效。
所以我自己的解决方案是创建一个基类,即" person"连接到"依赖"实体和人员也是学生和教师的专业化阶层。
这是正确的方法吗?
或者有更简单的方法来解决这个问题吗?
请帮助
由于
答案 0 :(得分:0)
也许你正试图向后定义FK。
这个SQL工作得很好
create table student (
ID int identity not null primary key
,Name varchar(20) not null unique nonclustered
)
create table teacher(
ID int identity not null primary key
,Name varchar(20) not null unique nonclustered
);
create table dependents(
ID int identity not null primary key clustered
,StudentID int references student(ID)
,TeacherID int references teacher(ID)
unique nonclustered (StudentID,TeacherID)
);
insert student(Name) values ('Fred'),('George');
insert teacher(Name) values ('Minerva'),('Severus');
insert dependents(StudentID,TeacherID)
select
student.ID,teacher.ID
from (values
('Fred', 'Minerva')
,('George','Minerva')
,('Fred', 'Severus')
)d(StudentName,TeacherName)
join student on student.Name = d.StudentName
join teacher on teacher.Name = d.TeacherName;
select
StudentName = student.Name
,TeacherName = teacher.Name
from dependents
join student on student.ID = dependents.StudentID
join teacher on teacher.ID = dependents.teacherID
drop table dependents;
drop table teacher;
drop table student;
按要求屈服:
StudentName TeacherName
-------------------- --------------------
Fred Minerva
Fred Severus
George Minerva