Sql server 在关系数据库中存储整数数组

Sql server 在关系数据库中存储整数数组,sql-server,database,data-structures,database-design,relational-database,Sql Server,Database,Data Structures,Database Design,Relational Database,我正在编写一个应用程序,允许用户跟踪体育锻炼 数据结构如下: 一个练习有一个集合数组,其中每个集合都有一个reps和weight的值 我可以通过两种方式在JSON中显示: 例1: { "id": "primary_key", "name": "bench press", "sets": [ { "reps": 8, "weight": 60 }, { "

我正在编写一个应用程序,允许用户跟踪体育锻炼

数据结构如下:

一个练习有一个集合数组,其中每个集合都有一个reps和weight的值

我可以通过两种方式在JSON中显示:

例1:

{
    "id": "primary_key",
    "name": "bench press",
    "sets": [
        {
            "reps": 8,
            "weight": 60
        },
        {
            "reps": 7,
            "weight": 50
        },
        {
            "reps": 6,
            "weight": 40
        }
    ]
}
或者,我可以将集合数组展平为两个数组,一个用于reps,另一个用于weights,其中reps[0]与weights[0]成对,以此类推

例2:

{
    "id": "primary_key",
    "name": "bench press",
    "reps": [8, 7, 6],
    "weights": [60, 50, 40]
}
虽然示例1代表了在训练中执行的一个更为熟悉的运动模型,但它有多个集合,每个集合都有一个重复次数和一个重量,示例2感觉紧凑而有效,尽管在写入数据之前,我必须检查重复次数和重量数组的长度是否相等

但是,我不知道如何使用关系数据库(如SQLServer)中的表来表示这些数据

我不想将reps和weights数组序列化为JSON字符串,因为我需要查询数组中的值


有人能为我指出构建数据的正确方向吗?

SQL Server中没有设置结构,因此需要使用1..n关系

Table1
======
ID (pk)
Name

Table2
======
ID (pk identity)
Table1Ref
Reps
Weights
表2具有表1 Tablr1Ref的外键

此设计还允许您简单地添加/删除重复次数和权重


另一种解决方案是使用XML列和XPath查询。

根据您的1-many关系,有许多不同的选项。以下是几种可能性:

创建一个包含列的表:

 Exercise     SetNumber    Reps    Weight
 ----------------------------------------
 Bench Press  1            8       60
 Bench Press  2            7       50
这样做的优点是只需将上面显示的数据关联起来

或者:

创建用于练习的表格:

Exercise_ID    Exercise_Name
----------------------------
1              Bench Press
和另一个集合表格:

 Exercise_ID     SetNumber    Reps    Weight
 ----------------------------------------
 1               1            8       60
 1               2            7       50

例如,如果您将来可能需要重命名练习,或者如果您希望跟踪多个练习实例,每个实例都有各自的关联集,那么这将更加灵活

是时候阅读已出版的关于信息建模和数据库设计的学术教科书了。记录和使用设计的语言和工具手册不是信息建模和关系数据库设计的教科书。谢谢!我决定使用第二个选项,为练习创建一个表,为在练习表上实现外键的集合创建另一个表。