我对MySQL知之甚少,而且我遇到以下情况:
然后,我有3张完全相同的表:
这3张最后一张表之间的唯一区别是,他们不会在前端部分采用相同的方法(每种类型一个类别)。
因此,我想知道是否有更好的解决方案,在MySQL中只有3个完全相同的表。我想过做一个带有3个布尔列的" pivot" 表(is_beat,is_fill和is_sheet是互斥的),但我不知道它是不是正确的方法。
答案 0 :(得分:1)
您可以将Fill
,Beat
和Sheet
表合并到一个表中,方法是将相同的原始列与 new 列放在一起描述它是什么类型的。您可以调用列type
。
CREATE TABLE categories (
artist_id int,
level_id int,
style_id int,
custom_1 varchar,
custom_2 varchar,
...
type varchar, -- can be 'Fill', 'Beat', or 'Sheet'
FOREIGN KEY (artist_id) REFERENCES Artist (id),
FOREIGN KEY (level_id) REFERENCES Level (id),
FOREIGN KEY (style_id) REFERENCES Style (id)
)
答案 1 :(得分:0)
您可以创建一个按字符串定义“类别”的表,并将该表中每行的uid / guid与保存Fill / Beat / Sheet行的单个表中的列相关联。您可以将其称为“类型”,然后保存与类别表相关的guid / uid。这也允许无限制的“类别”类型。