多值属性和外键

时间:2013-02-22 23:26:20

标签: oracle

阅读很多帖子但仍然感到困惑..所以,

我想做这样的事情 - 单个用户有多个朋友。例如  用户

user_id-> U1,frdlist-> U2,U3,U4

因此,为此我有一个名为user的表,其中user_id为主键AND 一个名为frdlist的表有user_id和frd_ids,我很困惑如何制作frdlist表。 在此user_id和frds_ids列中,两个外键都引用父表(user)的相同列(user_id)。

如何做到这一点。请帮助。我正在使用oracle 11g。

1 个答案:

答案 0 :(得分:0)

很简单。您的架构将是

user (
    user_id       PRIMARY KEY
  , first_name
  , middle_name
  , last_name
  ....
)

frduser (
    friendshipid  PRIMARY KEY
  , user_id       FOREIGN KEY REFERENCES user(user_id)
  , friend_id     FOREIGN KEY REFERENCES user(user_id)

(user_id, friend_id)的{​​{1}}上的唯一约束是不够的,因为它会寻找值的唯一组合,而不是唯一值。您需要在frduser上编写一个DML触发器,以防止任何插入/更新/删除重复的用户友好值。