2016-07-29 64 views
-1

表重复我不知道很多关于MySQL的,我在下面的情况:如何避免在MySQL

  • 艺术家表,用一个ID和一个字符串
  • 级别表,用一个ID和一个字符串
  • 一个风格表,用一个ID和一个字符串

接着,我有3个表即完全一致:

  • 填充表,具有一定的自定义字段+引用上述
  • 节拍表3分表中,与某些自定义字段+引用表3以上
  • 表,具有+引用上述

唯一二的3个表一些自定义字段这3个最后表格之间的差异在于它们在前端部分(每种类型的一个类别)上的处理方式不同。

因此,我想知道是否有更好的解决方案,只是在MySQL中有3个完全相同的表。我想过做一个“pivot”表有3个布尔列(is_beat,is_fill和is_sheet是互斥的),但我不知道它是否是正确的方法。

+0

可以显示一些示例数据并解释表之间的关系。顺便说一句,即使当他们描述不同的实体类似时,总是不好的有不同的表格。 –

+0

为什么我会陷入低谷? – Sardonic

回答

1

您可以通过具有与列,将描述它是什么类型类别沿着相同的原始列FillBeatSheet表合并成一个单一的表。您可以拨打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) 
) 
0

您可以创建一个由字符串定义你的“类别”一表和相关的UID /中保存您的填充/拍/表行的单表在表的GUID每一行的一列。你可以把它称为'type',然后保存与类别表有关的guid/uid。这也允许无限的“类别”类型。