Sql server 一对多或多对多用例的数据库设计?

Sql server 一对多或多对多用例的数据库设计?,sql-server,database-design,spring-data-jpa,Sql Server,Database Design,Spring Data Jpa,我有一个要求,其中有四个连续的一到多个表层,如下所示 School SchoolID | SName ----------------- 1 | HSS1 2 | HSS2 3 | HSS3 4 | HSS4 Class ClassID | CName | SchoolID ------------------------------- 1 | Class1 | 1 2 | Cl

我有一个要求,其中有四个连续的一到多个表层,如下所示

    School
SchoolID | SName
-----------------
1        |  HSS1
2        |  HSS2
3        |  HSS3
4        |  HSS4

Class
ClassID  | CName    |  SchoolID
-------------------------------
1        |  Class1 |  1
2        |  Class2 |  1
3        |  Class3 |  3
4        |  Class4 |  3


Student
StudentID  | StName    |  ClassID
-------------------------------
1          | StudC1  |  1
2          | StudC2  |  1
3          | StudC3  |  2
4          | StudC4  |  2

Bench
BenchID    | BName    |  StudentID
-------------------------------
1          | Bench1  |  1
2          | Bench2  |  1
3          | Bench3  |  1
4          | Bench4  |  2
1          | Bench1  |  3
2          | Bench2  |  3
3          | Bench3  |  4
4          | Bench4  |  4
其想法是从数据库中以json格式获取响应

{
"resources": [
    {
        "SName": "HSS1",
        "ClassList": [
            {
                "CName": [
                    {
                        "CName": "Class1",
                        "StudentList": [
                            {
                                "StName": "StudC1",
                                "BenchList": [
                                    {
                                        "BName": "Bench1"
                                    },
                                    {
                                        "BName": "Bench2"
                                    },
                                    {
                                        "BName": "Bench3"
                                    }
                                ]
                            },
                            {
                                "StName": "StudC2",
                                "BenchList": [
                                    {
                                        "BName": "Bench4"
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "CName": "Class2",
                        "StudentList": [
                            {
                                "StName": "StudC3"
                            },
                            {
                                "StName": "StudC4"
                            }
                        ]
                    }
                ]
            }
        ]
    }
]
}

我的问题是,

  • 在DB中拥有或创建嵌套的一对多关系表(预期结果是JSON)是一种很好的做法吗
  • 在创建表的过程中,是否还有其他简化方法可以得到与嵌套方法相同的响应
  • 作为源的表的上述结构将使用MERGE/UPSERT合并到目标表的相同结构中。那容易吗
  • 一对多对多关系的改变有帮助吗
  • 如果我以同样的方式设计表,从数据库设计中得到这样的json响应可以吗
  • 注意:假设表名是示例名称,并考虑所有4个表是一对多连接


    需要社区对此方法提出建议,以及更好的解决方案(如果有)。

    由于多种原因,脱离主题。这是一个针对特定问题的技术问答网站,而不是一个概括的“评估我的模式”并提出改进建议。此外,每篇文章都应该限制在一个问题上。最后,您应该设计您的模式,以准确、正确地反映您正在建模的实际系统,而不是让开发人员和应用程序更容易使用结果集。我不知道现实生活中的实体“bench”是什么,它演示了在没有您的经验的情况下,您的系统模型如何不容易转换到其他实体。而“目标表”意味着什么?还有另一个数据库/系统,您必须为其转换信息并将其导出到该模式?为什么不直接使用该模式作为起点?@SMor感谢您的评论,表名不是我必须在讨论中指定的真实示例。但是是的,这4个表是一一嵌套的。并且使用同一组表结构作为主仓库表,并且上面的表将每月同步到仓库表结构一次。目前我所处的环境是weather是否需要使用这种模式来设计这样的表和仓库表?这会不会引起我在所列问题中提到的任何问题。