Tree

如何建構模型以正確有效地表示關係數據庫上的樹狀數據?

  • January 4, 2011

基於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

如果每個節點確實是同一個數據實體,那麼該範例仍然表示每個實體一個表,以及一個用於樹遍歷的連結列,其中每個節點只連結一次。

對於在樹中多個點連結的實體,將使用單獨的連結表或多個不同的值列。

引用自:https://dba.stackexchange.com/questions/62