我想要一种方法来管理2个表之间的关系

时间:2012-11-23 07:25:42

标签: php mysql sql phpmyadmin

我有2张桌子。 Drummer和DrummerType。

DRUMMER_TYPE 
ID      TYPE
1       A1
2       A2
3       A3

DRUMMER
ID     NAME    TYPE
1      A       1
2      B       2
3      C       1

我想要一种方法来为鼓手添加更多类型。我不想在鼓手表上添加新表并保持关系原因已经做了太多编码。有什么方法可以保持关系(不使用逗号分隔)?

对于逗号分隔,它将看起来像这样(我不希望这样有任何其他方式):

DRUMMER
ID    NAME    TYPE
1     A       1,2,3  
2     B       2,3
3     C       1

3 个答案:

答案 0 :(得分:0)

是设计应该是:

Two tables :

1) Drummers     : id, name, type
2) Drummer_type : id, desc

The Drummers.type will be a reference to Drummer_type.id

Now IF you want to add more drummer's type, just insert a row in Drummer_type table

如果您对此有任何疑问,请与我们联系。

答案 1 :(得分:0)

您可以使用按位字段,更多信息:http://home.comcast.net/~tolkin.family/bitwise.htm

例如,您可以这种方式编写三个DRUMMER_TYPE:

000 = Nothing
001 = A1
010 = A2
100 = A3

这样,如果您可以为DRUMMER保存DRUMMER_TYPE A1和A3,则可以将值101保存在数据库中。该技术类似于权限在unix系统上的工作方式。

答案 2 :(得分:0)

如果您有多对多的关系,那么您应该有第三个表来维持这种关系:

DrummerIs:  DrummerId, TypeId

还有其他方法可以做到这一点(多列,连接值等),但它们都有严重的陷阱。几乎总是建议使用关系表来维护多对多的关系,因为最终它是最简单的实现和使用。

相关问题