[英]How to organize and manage 'nested' tables within a database?
我剛剛開始探索SQL數據庫,但是遇到了如何在現有表中存儲“復合”結構的問題(如果這是正確的解決方法)。 例如,假設我有一個數據庫表,其中包含用戶行,其中每個用戶都有唯一ID ,哈希密碼 , 電子郵件地址 , 電話號碼等。
很簡單。 但是,然后,我想允許每個用戶創建並存儲一系列帖子 。 每個帖子都有一個帖子id , content , date和其他各種元數據。 如果這是C ++,則可能將Posts的數組/向量作為User類的成員,然后將User對象的數組/向量存儲在某個地方。 是否可以在SQL表格中存儲表格,以便每個用戶都可以訪問自己的個人帖子表格?
還是最好使用一些公共元素(例如用戶ID或用戶名)來創建兩個單獨的表(一個用戶表和一個帖子表),以從帖子表中檢索用戶特定的數據,反之亦然?
我試圖了解如何實現一個復雜的數據庫,該數據庫可以管理大量用戶,並具有特定於用戶的數據集(如帖子,消息等)。那么,什么是繼續前進的好方法?
如前所述,在關系數據模型中,您可以定義兩個表,如下所示:
表1: 用戶
user_id user_name
----------- ------------------
1 'Tom'
2 'John'
表2: 職位
post_id user_id content post_date
-------- ---------- ------------------- ---------------------
1 1 'Hello, I am Tom.' 2014-04-02 14:14
2 1 'good bye' 2014-04-02 20:10
3 2 'I am John' 2014-04-02 22:22
您可以在此處閱讀介紹性文章:
Relational_model: http : //en.wikipedia.org/wiki/Relational_model
希望這可以幫助。
您不在表內存儲表。 您可以將數據存儲在多個表中,並為一個表分配主鍵,為另一個表分配外鍵。
閱讀有關主鍵,外鍵和關系模型的信息。
清除這些概念后,請閱讀有關數據庫規范化的信息
您不在表中存儲表。 正如您的第三段所建議的那樣,該策略是使用一些公用鍵將表行彼此“關聯”。
您描述的“唯一ID”通常稱為“主鍵”。 您可能有一個帶有主鍵的用戶表,該表在每次添加記錄時都會自動增加。 您將可以使用一個函數,以便在插入后可以確定剛添加的記錄的主鍵是什么,以便可以將記錄添加到引用用戶表的主鍵的其他表中。
您可能應該閱讀有關數據庫規范化和關系模型的信息 ,特別是有關法線形式之間的差異的信息。
關於選擇將帖子與用戶相關的字段,我建議您不要使用用戶名,而應使用一些用戶不可見的內部引用。 盡管您的應用程序現在可能不允許使用,但如果您想為用戶提供更改其用戶名的機會,則將內部數據庫結構與基於用戶輸入的內容聯系在一起只會在將來引起問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.