2016-02-21 65 views
-1

我正在設計一個數據庫來保存用戶寫的帖子。帖子有他們的id號碼,我所要做的就是將x用戶x寫的帖子的id保存在x`s db中。我在想,我應該將它們保存爲像11/1234/1452這樣的字符串,通過使用varchar數據類型,但是由於我沒有使用字母表,並且char數據類型如此昂貴,突然感覺有點浪費。有沒有一種好的方法可以在mysql中有效地保存數字數組?在mysql中保存數組數組的最佳數據類型是什麼?

+1

有辦法做到這一點,但你的模型將被非規範化。您將受益於創建'posts'表,該表將存儲'user_id'併爲每個帖子插入新行,而不是將ID保留在數組中。性能提升將非常有益。 –

+0

@consider me你的意思是最好在帖子的表格中使用select而不是選擇用戶,然後通過選擇主鍵搜索帖子? –

+0

查看@GordonLinoff的回答。這正是我的意思。 –

回答

1

最好的數據結構是一個聯結表,每個用戶一行,每個職位一個。它可能是這個樣子:

create table UserPosts (
    UserPostId int primary key auto_increment, 
    UserId int not null, 
    PostId int not null, 
    constraint fk_UserId foreign key (UserId) references Users(UserId), 
    constraint fk_PostId foreign key (PostId) references Posts(PostId) 
) 

或者,你可能有一個1-N的關係,只需要一個Posts表爲保存該UserId列。

+0

這個看起來非常完美,非常感謝 –

+0

第一部分,「聯結」或「橋樑」表用於解決多對多的關係。這意味着帖子可以有多個作者,作者可以寫多個帖子。如果一個帖子只能有一個作者,而不是複數,那麼你需要兩個表'user_'和'post_',其中'post_'有一個列(外鍵),用於存放作者的標識符(主鍵值的副本'user_'表,這就是我們代表一對多關係的方式 –

+0

@basil bourque我問過這個問題....我認爲在帖子中設置用戶密鑰是個不錯的主意表,因爲它包含大量的信息...因爲表太重了,搜索作者寫的特定帖子可能需要很長時間? –

相關問題