Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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
Mysql 我应该使用什么表关联?_Mysql_Database_Relationships - Fatal编程技术网

Mysql 我应该使用什么表关联?

Mysql 我应该使用什么表关联?,mysql,database,relationships,Mysql,Database,Relationships,我不熟悉创建具有复杂关系的数据库,现在我正在创建一个项目,其中有很多复杂的关系。我真的很困惑我应该使用哪种关系 一点背景:我正在编写一个应用程序,可以向观众播放幻灯片。我有三个主要表格:创作者(制作幻灯片的人)、学习者(观看幻灯片的人)和模块(幻灯片)。创作者授予学习者访问特定模块的权限,学习者可以访问多个创作者的幻灯片 我知道所有模块都有一个创建者,所以我需要在创建者的ID号和模块表中名为creator_ID的列之间使用1:1的标识关系。我很难理解的是如何将创作者、模块和学习者联系在一起。我认

我不熟悉创建具有复杂关系的数据库,现在我正在创建一个项目,其中有很多复杂的关系。我真的很困惑我应该使用哪种关系

一点背景:我正在编写一个应用程序,可以向观众播放幻灯片。我有三个主要表格:创作者(制作幻灯片的人)、学习者(观看幻灯片的人)和模块(幻灯片)。创作者授予学习者访问特定模块的权限,学习者可以访问多个创作者的幻灯片


我知道所有模块都有一个创建者,所以我需要在创建者的ID号和模块表中名为creator_ID的列之间使用1:1的标识关系。我很难理解的是如何将创作者、模块和学习者联系在一起。我认为我应该使用n:m标识模块和创建者之间的关系,但我不知道如何添加哪些学习者可以访问模块

您应该使用正确的关联来表示。首先,远离DB模型一步,看看不同的实体是如何映射在一起的:它们是1-1吗?1米?M-N?把它画在纸上(实际上,它不必是超正式的),然后问:“这有意义吗?”“一个模块可以由多个人创建吗?”“一个人可以创建多个模块吗?”等等(数据库中的所有键和FK都只是一个实现细节,旨在支持这样的ER模型。)我明白你的意思,但我不知道哪一个是唯一的足以使关键。模块有多个学习者,因此学习者不能是关键,因为它会多次出现。同时,学习者有多个模块。我只是不知道什么是独一无二的,足以让我们的关系建立在什么基础上。