C# 链接文本的数据库模式

C# 链接文本的数据库模式,c#,sql,tsql,sqlite,C#,Sql,Tsql,Sqlite,我的任务是设计一个圣经数据库,不隶属于任何团体;) 问题是这样的,我有1节圣经经文,18个不同的圣经经文评注,5个评注。计划是制作一个WPF应用程序,这样用户就可以在屏幕的一侧用不同的评论员的评论来标记文本 我想做的是,当一个人看这首诗时,评论将在屏幕一侧的按钮上突出显示,当他看评论时,这首诗将突出显示,我还想突出显示和搜索其他诗句引用 我需要将所有内容预编译到sql中,然后将其导出到SQLite中。我已将数据分解为以下形式 BOOK CHAPTER PARAGRAPH VERSE Commen

我的任务是设计一个圣经数据库,不隶属于任何团体;)

问题是这样的,我有1节圣经经文,18个不同的圣经经文评注,5个评注。计划是制作一个WPF应用程序,这样用户就可以在屏幕的一侧用不同的评论员的评论来标记文本

我想做的是,当一个人看这首诗时,评论将在屏幕一侧的按钮上突出显示,当他看评论时,这首诗将突出显示,我还想突出显示和搜索其他诗句引用

我需要将所有内容预编译到sql中,然后将其导出到SQLite中。我已将数据分解为以下形式

BOOK
CHAPTER
PARAGRAPH
VERSE
CommentatorName
CommentatorComment
VerseINComment location
所以我有以下问题

1:数据以停滞的形式输入(一首诗将被输入多次,但只有同一作者的一条评论),我们将在数据库中有一个数据块。我将需要处理的数据在评论中寻找诗句引用。如何做到这一点?所有数据都应该输入数据库,然后运行一个程序来搜索数据库,还是我可以使用tsql搜索评论员的评论中的诗句,然后标记它们

2:存储相对重要性位置的最佳方式是什么?意思是我在思考某种形式的映射,就像他们在真实地图中使用的那样,1,1,1,1将表示GENISIS,第1章第1段第1节(实际=在开头……)。如果您对此有任何想法,我们将不胜感激


ETT(ehost智囊团)

最好防止坏数据进入数据库,而不是事后删除


在输入数据时,您应该检查现有数据中是否存在可能的重复项,并在出现这种情况时提示用户。

我可能会使用类似的内容作为基础数据结构

-- (UI1) = UniqueIndex1

Book (Id (PK), Name)
Verse (Id (PK), BookId (FK / UI1), ChapterNo (UI1), ParagraphNo (UI1), 
        VerseNo (UI1), VerseText)
Commentator (Id (PK), Name)
Comment (Id (PK), VerseId (FK), CommentatorId (FK), CommentText)
CommentOnComment (Id (PK), CommentorId (FK), CommentId (FK), CommentText)
将章节/段落/韵文拆分到各自的表中没有多大意义,因为每个都只是一个整数值。 评论员可以对已经输入的诗句进行评论,而无需自己重新输入文本

在注释上添加注释意味着某种正在进行的对话,因此您可能希望添加一些方法来标识这些注释的顺序(例如,记录创建日期/序列号)。我假设您不是在寻找“comments on the comments on comments on comments”,它是树状的,需要一个自引用表

如果您想提供一种机制来方便地引用verse(建议使用1,1,1,1),则应在数据输入时将其映射到verse表中的相应Id。在这种情况下,您必须注意分配给每本书的Id

跨版本比较? 如果您的应用程序允许对不同版本进行评论/比较,您可以将版本作为一个表格放在图书旁边:

Edition (Id (PK), Name)
Book (Id (PK), Name)
Verse (Id (PK), EditionId (FK / UI1), BookId (FK / UI1), ChapterNo (UI1),  
        ParagraphNo (UI1), VerseNo (UI1), VerseText)
谈到圣经版本之间的差异,我不是专家,但如果你习惯的话,你可以通过过滤BookId、CapterNo、ParagraphNo、VerseNo,在不同版本中识别相同的段落

希望这有帮助,
Brett.

问题标题与编程无关。请编辑标题以反映您遇到的编程问题的性质。我已编辑您的问题及其标题以确保可读性。没有用户,它是自动生成的