我正在使用MySQL,我希望有一个表hand
,它将包含固定数量card
s(假设3例如,但我实际上需要8)。我需要存储这些hand
的每一个,但不需要复制现有的hand
。通过“复制”,我的意思是避免有两个包含相同数据的记录,如手(1,2,3)和手(2,1,3)。如何为包含指向同一表的多个外键的表构建(My)SQL表结构
目前,我有这样的:
CREATE TABLE card
(
id int(11) NOT NULL,
name varchar(255) NOT NULL,
)
CREATE TABLE hand
(
id int(11) NOT NULL,
card_1 int(11),
card_2 int(11),
card_3 int(11)
)
ALTER TABLE card ADD PRIMARY KEY (id)
ALTER TABLE hand ADD PRIMARY KEY (id)
ALTER TABLE hand ADD FOREIGN KEY (card_1) REFERENCES (card.id)
ALTER TABLE hand ADD FOREIGN KEY (card_2) REFERENCES (card.id)
ALTER TABLE hand ADD FOREIGN KEY (card_3) REFERENCES (card.id)
但它迫使我去尝试INSERT
之前已有hand
检查时,所有的可能性,这是这将花费几个小时在一个 s到写请求。
有没有简单的方法来完成这个?
菜鸟,请评论前阅读完整的答案。唯一的约束只是一个侧面说明。重点在于,在存储它们之前,您应该将手中的卡片分类。如果不清楚的话,我修改了文字。 – GolezTrol
我现在明白了:)对不起,这样做更有意义。感谢您的额外解释 – Noob