2017-01-24 123 views
-1

我正在和我的朋友讨论这个问题,我不明白这个主意。每个带有这个概念的元组都有一个parent_id。然而,我不知道如何通过使用这个属性作为参考来遍历二叉树。我试图在数据库中模拟圣经。圣经是由两个当代空间构成的,这些空间是与书籍相关的新旧约。这些章节和章节与章节相关。我希望能够通过url存储数据库中的特定段落。每个网址都会与布道和解释相关联。我打算为每个类创建一个表,所以模式看起来像这样。如何在数据库表中创建二叉树的概念?

contemporaryspace(ID int,oldornew string) 
books(ID int,whichbook string) 
chapters(ID int,which_chapter string) 
passages(ID int,which_passage string) 

我对数据库是完全陌生的,并计划这么做;然而,一位朋友告诉我,这是一个坏主意,最好把一张桌子变成二叉树来实现我的目标。

+1

标签'sql'是不够的......你的问题可能对你很清楚,但它不适用于外部。请使用[编辑链接](http://stackoverflow.com/posts/41818528/edit)并添加适当的标签(RDBMS包含版本)并提供更多详细信息,最好是一个示例场景和一个*明确的问题*。否则,这将很快关闭... – Shnugo

+1

SO警察工作非常快,无情:-)但你编辑你的问题,并提供更多的细节。我投票重新开放,但:请添加您想要使用的RDBMS。特别是分层数据的处理方式很不一样...... – Shnugo

+1

嘿,这将会很有趣:-)不,你不应该添加标签'rdbms',而是要使用的实际SQL系统(MySQL,Oracle,MS SQL Server ,无论...)并请添加版本! – Shnugo

回答

0

如果一方家长少于或多于两个孩子,那么该树不是二元的。

如果数据库中的任何条目的处理方式与其他条目的处理方式不同,则它们具有不同的类型,应该放入单独的表中。 例如,如果一本书可以有一个作者,但不是一个章节,那么您不应该在同一个表中存储关于书籍和章节的信息。

但是,有可能并非所有的表格都是真正需要的。书籍有一个属性,指定它们是在OT还是NT,这将是一个引用contemporaryspace表的外键,但如果contemporaryspace实际上没有存储任何有用信息,那么您不需要该表,并且可以存储"OT""NT"直接在书本表中。