Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使这种多对多关系发挥作用?_Javascript_Database_Join_Database Design - Fatal编程技术网

Javascript 如何使这种多对多关系发挥作用?

Javascript 如何使这种多对多关系发挥作用?,javascript,database,join,database-design,Javascript,Database,Join,Database Design,我有一张练习表。我希望能够在react应用程序中创建训练,然后将其提交到数据库。但我正在努力思考该模式将如何工作。我怎样才能做到这一点 我基本上希望锻炼是一系列的锻炼。但我知道在数据库中存储阵列不是最好的主意 但我不明白,如果我有一张练习表,然后是一张锻炼表,我怎么能把它们结合在一起,形成一张表格,在表格中我有一张锻炼列表 我希望能够拿出一个独特的锻炼,这将给我一个锻炼的锻炼清单,连同日期和其他信息 我能想象的唯一方式是: id: 1, name: 'my first workout', exe

我有一张练习表。我希望能够在react应用程序中创建训练,然后将其提交到数据库。但我正在努力思考该模式将如何工作。我怎样才能做到这一点

我基本上希望锻炼是一系列的锻炼。但我知道在数据库中存储阵列不是最好的主意

但我不明白,如果我有一张练习表,然后是一张锻炼表,我怎么能把它们结合在一起,形成一张表格,在表格中我有一张锻炼列表

我希望能够拿出一个独特的锻炼,这将给我一个锻炼的锻炼清单,连同日期和其他信息

我能想象的唯一方式是:

id: 1, name: 'my first workout', exercises: [array of objects]

您知道这个模式会是什么样子吗?

对于多对多关系,您应该有第三个表来存储这些关系,称为连接表。例如,在您的案例中,每行都有一个exerciseID和一个workoutID,这意味着两个锻炼和锻炼是相关的

例如,该表中可能有许多行的exerciseID=1个不同的workUtid,以及许多行的workUtid=5个不同的exerciseID,因此是多对多

更多解释 联接表的每一行有三个字段:

它有自己的id,因为在数据库中,无论发生什么情况,每个表都有一个id是很好的做法 运动型 韦努蒂德 例如,我们有一个这样的连接表:

ID      ExerciseID    WorkoutID
-------------------------------
1000    12            5
1001    12            6
1002    12            9
1003    12            12
1004    12            27
1005    13            2
1006    13            6
1007    13            9
这意味着:

第12项练习有训练[5,6,9,12,27] 第13项练习有训练[2,6,9] 但关于如何创建此表:


要么你有一个用户界面,允许你的用户添加、编辑和删除练习和锻炼,要么你自己做。无论哪种方式,任何定义运动或锻炼的人都必须知道它们之间的关系!因此,他们还可以将该关系定义为连接表中的一行,编辑标题以针对您的特定问题。是时候阅读已出版的关于信息建模与数据库设计的学术教科书了。记录和使用设计的语言和工具手册不是关于信息建模和数据库设计的教科书。PS这显然是一个很容易用谷歌搜索的常见问题。在考虑发帖之前,请总是用谷歌搜索你的问题/问题/目标和/或错误消息的许多清晰、简洁和准确的措辞,有或没有你的特定字符串/名称,并阅读许多答案。如果你发布一个问题,用一句话作为标题。PS请用DBMS或某种DBMS标记。可能重复的ok我知道,但我不明白第三个表如何知道哪个WorkUtid与哪个练习Id匹配?若这样做有意义的话,连接表的每一行都有三个字段:它自己的id,因为在数据库中,每个表都有一个id,不管是什么,exerciseID和workUtiD,这是一种很好的做法。例如,一行是[1000,12,5],这意味着第12项运动与第5项运动相关,但我的意思是。假设我有身份证:1,姓名:二头肌卷发。在练习桌上。我如何知道它是否有锻炼id:1、id:5或两者都有,或者两者都没有?对不起,我说的太多了。我知道这就是它的样子,但我还是不知道你是怎么到那张桌子的?假设练习有5行,唯一ID。训练表有5行,唯一ID。我仍然不确定数据集在什么时候可以知道。这两个表之间没有任何关联,我知道中间的表,但我看不出您是如何到达该表的,或者您是如何生成该表的。。很抱歉,我可能是在偷懒。当然,数据本身无法知道!但是你知道,你填充了表格。常见的情况是,当您定义每个练习并将其添加到数据库中时,您还定义了它的关系,这意味着您将记录添加到连接表中。