我正在与一组数据(圣经),经常性字段(书,章等),并试图决定如何构造它。模型设计作为数据库表或多维列表?
这是我正在看的两个设计的一个例子。比另一个更有用/合适/有利吗?
表设计:
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. –