0

我有一个用户的 mysql 表和某些属性之一。

我有第三个表来组合两者(具有 X 个属性的用户)。每个属性都是一个单独的元素/列。

我的问题是;如果我有一个用户有 X 个元素,另一个用户有 X+1 个元素,我如何告诉数据库向表中添加 +1(或任意数量的列)?

会是这样吗?

if(table_columns < attribute_columns)
{
mysqli_query($db,"ADD 'X amount' NEW COLUMN && ADD attributes");
}
else
{
mysqli_query($db,"ADD attributes");
}

只是想澄清一下我走在正确的轨道上,或者我是否以错误的方式处理事情。

4

1 回答 1

0

这不是做你想做的事情的正确方法。通常是这样完成的: 用户表:用户 ID、名称、您可能想要的其他内容...属性表:AttID、名称、您可能想要的其他内容...用户属性表:用户 ID、AttID、AttValue

您将 UserAttributes.UserID 约束为 Users.UserID 上的外键。您将 UserAttributes.AttID 约束为 Attributes.AttID 上的外键。要获取用户的属性列表,请使用: select u.name as username,a.name as attname,ua.attvalue as attvalue from users u join userattributes ua on u.userid=ua.userid join attributes a on ua .attid=a.attid 其中 u.userid = USER_ID_TO_LOOK_FOR

于 2013-03-09T06:15:01.623 回答