我遇到过一些看似简单的东西,但又让我再次挠挠头。我有一个用户表:MySQL:在一个表中引用另一个表的两个外键
user_id (PK) | username| email | something
...和“意见”,当一个用户查看其他用户的表:
view_id (PK) | viewer_id | viewed_id | view_date
的“viewer_id”和“viewed_id”都是user_ids,允许我分别搜索用户是查看者还是正在查看的实例。
我最初认为这两列都是外键,但是在我的schema.yml文件(我使用Doctrine 1.2)中创建了表并且指定了两个单独的外键关系(每列一个),它似乎学说只考虑了这两个表之间的第一个列出的外部关系(user_id> viewer_id)。
现在是否让我感到困惑,无论这是MySQL的行为是否正确,教义中的问题,还是我接近这个问题的方式,或者没有什么可担心的!一个表中可以有两个单独的外键映射到另一个表中的同一列吗?鉴于JOIN仍然会让我通过user_id访问“视图”,这是否合乎逻辑?我弄错了吗?
谢谢你的时间。
编辑 - 架构文件:
User:
relations:
View: {class: View, local: user_id, foreign: viewer_id, type: many, foreignType: one, alias: View, foreignAlias: User}
View: {class: View, local: user_id, foreign: viewed_id, type: many, foreignType: one, alias: View, foreignAlias: User}
... only difference is viewer_id/viewed_id
你可以显示你的模式文件的这一部分?也许你没有正确设置它。 – 2010-01-31 12:51:11
添加了模式文件。 – Tom 2010-01-31 12:55:05