2013-03-09 88 views
0

我有一個mysql用戶表和某些屬性。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"); 
} 

只是想澄清一點,我走在正確的軌道上,或者如果我以錯誤的方式去做事情。

+0

在此scanrio中簡單地創建一個包含例如5個字段的表。用戶1有3個字段,其他字段應該爲空。另一個用戶將擁有所有的字段。這是應該如何完成的。 – 2013-03-09 06:11:03

回答

0

這不是正確的方式來做你看到你正在做的事情。這是通常的做法: 用戶表:用戶標識,名稱,你可能想要的其他東西... 屬性表:AttID,名稱,其他你可能想要的東西... UserAttributes Table:UserID,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

+0

您是否知道我是否可以閱讀某些文檔或教程?或者我可以輸入一些搜索關鍵字以找到正確的位置。 – deathtap 2013-03-09 06:47:49

+0

它通常被稱爲映射表。它用於兩組之間的多對多關係。在Google中輸入「映射表」引發了大量關於如何以及爲什麼使用映射表的文章。 – kainaw 2013-03-09 15:57:03

+0

謝謝,謝謝,謝謝... – deathtap 2013-03-10 04:42:15