【发布时间】:2014-11-23 09:05:57
【问题描述】:
假设有一个学生和教授的数据库(一个很简单的),关系数据库如下:
GradStudent (_id_, name, gradStuff)
UndergradStudent (_id_, name, underGradStuff)
Professor (_id_, name)
Teaches(_prof_id_, _stud_id_)
考虑到上面的关系数据库是为了代表完全不相交的专业化,即没有表Student,而是两个完全独立的表,当用SQL编写这个以实现数据库时,我将如何获取学生Teaches 表的 ID?
我不知道如何从两个不同的表中创建外键。
我写这个问题是假设 SQL 语言在所有平台上都不是完全不同的。如果需要澄清:我正在开发 Oracle SQL Developer。
编辑 :: 附加信息/澄清:
关于我想要实现的目标的更直观、更简单的视图:
我想用 SQL 代码编写以下内容(但是我不知道怎么可能,因此不知道如何)
如果图片过于简单,我很抱歉,如果需要我可以添加更多属性和细节,请告诉我。
【问题讨论】:
-
Teaches 中需要有两个 id 字段,一个用于研究生,另一个用于本科,其中一个需要设置为 NULL,我们可以设置检查约束来满足条件。
-
你知道是否有一种方法可以实现
Student表并且仍然是完全不相交的专业化(即没有既不是本科生也不是研究生的学生被放入数据库)?我对约束不太熟悉,所以我问。 -
“获取 Teaches 表的学生 ID”并没有说明您要表达的内容。
-
很抱歉。我添加了一张图片以进行澄清。希望对您有所帮助。
-
请用你想说的话代替废话。您的图表也添加了学生,但您的问题并没有表明您愿意拥有它,甚至说“没有学生表”。此外,标有“TOTAL”的线的线是难以理解的,我们只能猜测。请努力使用语言清楚地表达自己。而且确实需要努力。不要希望,行动吧。
标签: sql database relational-database