不同表中具有相同名称的主键

时间:2015-01-21 17:15:25

标签: sql foreign-keys primary-key

  • Event EID ,学期,MName,时间,房间......)
  • Module MName ,...)
  • Eventplan EID SName
  • Subject SName ,...)

这是我的数据库架构。我不明白Event< - >之间的关系活动计划< - >学科。粗体名称是主键。但是,如果EID是Event和Eventplan中的主键,哪一个是他们自己关系中的主键?

必须有主键和外键才能在SQL中使用它们。因此,当两个名称相等甚至标记为主键时,我真的不明白如何看到它们中的哪一个具有哪个角色。

1 个答案:

答案 0 :(得分:0)

理论在活动计划上有点不对......

鉴于计划可以用于任何数量的事件,但事件总是只有1个计划......

我的结构如下:

<强> PLAN PID,PName ....等..,

<强>事件 EID,学期,MID,SID,PID,时间,房间

<强>模块 MID,Mname ......

<强>主题 SID,SName

这假设如下:

  • 计划属于零或许多事件。
  • 模块属于Zero或may events。
  • 以下主题为零或多个事件。
  • 活动只有一个模块,主题和计划。
  • 包含ID的字段是PK或FK ..首先列出的是PK,后面列出的是FK。

我插入MID和SID,因为如果更改名称,则必须更新两个表。在这种情况下,如果名称发生变化,MID和SID将成为不依赖的代理键。