Tree
如何建構模型以正確有效地表示關係數據庫上的樹狀數據?
基於Traversing tree-like data in a relational database using SQL question,我想知道在考慮物理含義的情況下,如何經常使用關係數據庫上描述樹狀數據的方式?
我假設 RDBMS 除了正常的 SQL ANSI 或常見的可用特性之外沒有特殊的特性來處理。
毫無疑問,我總是對 MySQL 和 PostgreSQL 以及最終的 SQLite 感興趣。
我相信他正在尋找二叉樹之類的東西。我將只包含三個與同一張表的唯一 ID 相關聯的鍵,一個用於左側,一個用於右側子級,一個用於父級。
即-(非常虛擬碼)
TABLE tree int id autoinc varchar(16) data_you_care_about int parent_id int left_child_id int right_child_id FOREIGN KEY parent_id = tree.id FOREIGN KEY left_child_id = tree.id FOREIGN KEY right_child_id = tree.id
如果每個節點確實是同一個數據實體,那麼該範例仍然表示每個實體一個表,以及一個用於樹遍歷的連結列,其中每個節點只連結一次。
對於在樹中多個點連結的實體,將使用單獨的連結表或多個不同的值列。