使用两个外键创建表的代码是什么?
我有一个USER表和一个PICTURE表。由于USER可以在许多PICTURE中,而且许多PICTURE可以来自USER,因此我需要一个带有两个主键的第三个表。
谢谢你,像往常一样,你对学习新手非常有价值。 :)
答案 0 :(得分:2)
我不能专门针对mySQL发言,但在我使用过的大多数数据库中,您可以在桌面上放置所需数量的外键。但是你只能有一个主键。带有两个键的第三个表是正确的选择。为其他两个表中的每个表创建一个外键,并为表中的两个ID组成一个主键。
答案 1 :(得分:1)
如果我理解正确,您可能需要执行以下操作:
CREATE TABLE users (
user_id INT NOT NULL PRIMARY KEY,
name VARCHAR(50) NOT NULL
) ENGINE=INNODB;
CREATE TABLE pictures (
picture_id INT NOT NULL PRIMARY KEY,
filename VARCHAR(255) NOT NULL,
posted_by INT NOT NULL,
FOREIGN KEY (posted_by) REFERENCES users(user_id)
) ENGINE=INNODB;
CREATE TABLE users_in_pictures (
user_id INT NOT NULL,
picture_id INT NOT NULL,
PRIMARY KEY (user_id, picture_id),
FOREIGN KEY (user_id) REFERENCES users(user_id),
FOREIGN KEY (picture_id) REFERENCES pictures(picture_id)
) ENGINE=INNODB;
请注意,每张图片都可以由用户发布。事实上,posted_by
字段受引用users
表的外键约束。
另外,我假设您要标记图片ala-facebook。在这种情况下,您可以使用第三个表,该表使用复合主键(user_id,picture_id),并且这两个字段也被约束到相应的表。