Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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 2个实体可以有2个关系吗_Mysql_Database - Fatal编程技术网

Mysql 2个实体可以有2个关系吗

Mysql 2个实体可以有2个关系吗,mysql,database,Mysql,Database,在数据库设计中,两个实体之间可以有两种关系吗?i、 例如,有两个实体:捐赠者和管理员。。有两种关系 1.管理员访问捐赠者详细信息 2.管理员可以联系捐赠者,反之亦然 我们可以用两种关系将它们连接起来吗?当然可以,不过在数据库中建模“访问”和“联系人”关系的意义取决于您的应用程序。但我将继续使用你的例子,并假设这些关系是n对n。下面是SQL的外观(警告,语法未测试): 这两个关系也可以用布尔标志在单个联接表中表示,如下所示: CREATE TABLE admin_donor ( id_ad

在数据库设计中,两个实体之间可以有两种关系吗?i、 例如,有两个实体:捐赠者和管理员。。有两种关系 1.管理员访问捐赠者详细信息 2.管理员可以联系捐赠者,反之亦然
我们可以用两种关系将它们连接起来吗?

当然可以,不过在数据库中建模“访问”和“联系人”关系的意义取决于您的应用程序。但我将继续使用你的例子,并假设这些关系是n对n。下面是SQL的外观(警告,语法未测试):

这两个关系也可以用布尔标志在单个联接表中表示,如下所示:

CREATE TABLE admin_donor (
    id_admin int unsigned NOT NULL,
    id_donor int unsigned NOT NULL,
    detail_access tinyint(1) NOT NULL,
    contact tinyint(1) NOT NULL,
    PRIMARY KEY (id_admin, id_donor),
    CONSTRAINT FOREIGN KEY(id_admin) REFERENCES admin(id) ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT FOREIGN KEY(id_donor) REFERENCES donor(id) ON DELETE CASCADE ON UPDATE CASCADE
);
这将在代码上花费一些额外的精力,因为您需要确定在添加关系时是否插入或更新行,以及在删除关系时是否删除或更新行,但我认为这仍然是一个可用的替代方案

CREATE TABLE admin_donor (
    id_admin int unsigned NOT NULL,
    id_donor int unsigned NOT NULL,
    detail_access tinyint(1) NOT NULL,
    contact tinyint(1) NOT NULL,
    PRIMARY KEY (id_admin, id_donor),
    CONSTRAINT FOREIGN KEY(id_admin) REFERENCES admin(id) ON DELETE CASCADE ON UPDATE CASCADE,
    CONSTRAINT FOREIGN KEY(id_donor) REFERENCES donor(id) ON DELETE CASCADE ON UPDATE CASCADE
);