我正在與一組數據(聖經),經常性字段(書,章等),並試圖決定如何構造它。模型設計作爲數據庫表或多維列表?
這是我正在看的兩個設計的一個例子。比另一個更有用/合適/有利嗎?
表設計:
class Bible
{
public string Version { get; set; }
public string Book { get; set; }
public int Chapter { get; set; }
public int Verse { get; set; }
public string Text { get; set; }
}
顯然,在表中設計了很多浪費的內存(因爲重複數據)。每個條目的版本都是相同的,這本書將在大多數條目中重複,該章節將重複以減少條目。只有經文和文本對每個記錄都是唯一的。另一方面,這就是數據庫如何永久運行(除非你要去關係路線)。抓取數據非常簡單。
列表設計:
class Verse
{
public int Number { get; set; }
public string Text { get; set; }
}
class Chapter
{
public int Number { get; set; }
public List<Verse> Verses { get; set; }
}
class Book
{
public string Name { get; set; }
public List<Chapter> Chapters { get; set; }
}
class Bible
{
public string Version { get; set; }
public List<Book> Books { get; set; }
}
這是更爲簡潔,從內存待機點,但你必須爲foreach
,你需要找到一切。我不確定LINQ是否也適用於多維度(也許它很棒,但我只在平面數據上使用過)。
你們認爲什麼?有時每個人都是明智的選擇,或者總是成爲默認選擇?
你可能得不到一個好的答案,因爲這可能會被認爲是基於觀點的,但是你的列表設計似乎是正確的方式,Linq的效率非常高! –
如何存儲數據以及如何呈現它實際上是兩個不同的問題。我會堅持使用第三種正常格式來存儲數據。使用Linq進行查詢並且無論如何需要使用它來投影數據都很簡單快捷。 – axlj
做一些關於數據標準化的閱讀。您將很快拒絕選項1. –