我对数据库设计有些新意,所以我想了解如何最好地放置当前表格。
我有一张表Jobs
,可以容纳各种各样的工作。用户可以创建Subjobs
。 Subjob
有一个Job
作为父级。 Subjob
具有与Job
相同的所有属性,但其中一些属性是只读的,而它们都是Job
的读/写。 Job
可以包含多个Subjobs
。目前,可能只有一层subjobs,但我希望将来允许Subjobs
无限嵌套的灵活性。这些对象将通过MVC Web应用程序进行交互。
我考虑过两种布局选择:
Jobs
和Subjobs
都有自己的表格。
Job
中引入列,其唯一目的就是与自己嵌套。Job
和Subjob
必须有两个独立的控制器/视图集,尽管它们在属性上是相同的。 Jobs
和Subjobs
位于同一张桌子上。 Jobs
只是一个可为空的parent_job_id
属性,如果它是Subjob
,则该属性为非null。
Job
表中引入了一个奇怪的嵌套属性,该属性与Job
的实际属性无关。有关如何处理此事的任何建议?我还没考虑过额外的设计模式吗?如果重要的话,我正在使用Entity Framework 6 Code First。
答案 0 :(得分:3)
如果您没有描述具有多个级别的层次结构,那么第一个选项就可以了,但您确实如此。您描述的模式通常称为邻接列表,在您描述第二个选项时会存储该模式。
存储层次结构的其他一些选项是:
层次结构参考: