
4.11 以模式作為資料檢索語言
|
173
若你想知道具
P1
庫存的供應商名稱,這需整合
S
與
INV
兩資料表的資訊,這可透過跨資
料表檢索達到,但 SQL 語法另外提供子檢索(subquery)的功能,這也可以透過規則式
實作,以下使用
MemberQ
指令實作 SQL 的
IN
語法。
前 文 範 例 中, 介 紹 了 關 聯 式 資 料 的 檢 索, 關 聯 式 資 料 的 特 點 是 其 正 規 化
(normalization),每行能夠僅包含單元資料(atomic data)。然而 Mathematica 並非關
聯式資料庫,因此資料可能以任意巢狀結構出現,但這不會是個難題,因為模式比 SQL
語法有彈性多了;儘管如此,在擷取資訊之前,把資料以表格方式儲存還是簡單多了。
以下介紹更貼近 Mathematica 的範例。
從 第 6 版 開 始,Mathematica 即 提 供 豐 富 的 線 上 資 料 可 供 使 用,
GraphData
與
PolyhedronData
便是其中兩種,這兩種資料來源的關聯在於每個多面體具有一個對應
的圖,在
PolyhedronData
中將兩資料庫連結的屬性為
SkeletonGraph
,而在資料庫領域
中,
SkeletonGraph
稱為
GraphData
的
外部索引鍵
(
foreign key
),這可讓我們檢視多面
體與其對應圖的關係。在本例中,考慮所有同時為 Eulerian 與 Hamiltonian 的圖及它們
所對應的阿基米德多面體(Archimedean),這是