在MYSQL中实现多对多的关系

时间:2015-11-22 04:40:20

标签: mysql

您好我有一个包含基本用户配置文件的应用程序,例如firstname,lastname和email。用户可以创建一个事件。事件表包括标题,描述,事件时间。用户可以创建活动并邀请其他人加入该活动。此外,还可以邀请用户参加多个活动。

分析:这是多对多的关系,因为用户可以拥有多个事件,并且多个用户可以创建事件。根据我的分析,我可以通过两种方式做到这一点。

  1. 通过将用户添加到好友表并邀请他们参加活动并等待来自好友的确认请求来建立友谊表。 OR
  2. 让用户创建一个事件并向用户表中的所有用户广播,并等待每个用户的确认请求。
  3. 我使用了数字2.我创建了一个用户表和一个事件表。由于它是多对多的关系,因此创建了另一个名为user_event的表。 user_event表包含事件,拥有该事件的userA和userB是参与该事件的用户。我添加了另一个名为pending_request的列,其默认值为0表示不参加,1表示参加。由于某种原因,我觉得我的方法是错误的,如果我的方法错了,请有人可以纠正我。

    活动表:

    create table if not exist 'event'(
    event_id unsigned unsigned int not null auto_increment,
    title varchar(20) not null,
    description varchar(20) not null,
    date dateTime not null,
    primary key(event_id))ENGINE=InnoDB;
    

    用户表:

    create table if not exist 'user'(
      user_id unsigned int not null auto_increment,
      firstName varchar(20) not null,
      lastName varchar(20) not null,
      image varchar(20) not null,
      primary key(user_id))ENGINE=InnoDB;
    

    用户与事件之间的多对多关系:

    create table if not exist 'users_event'(
       event_id unsigned not null,
       userA unsigned not null,
       userB unsigned not null,
       pending_request int not null default 0,
       Foreign Key(event_id) references event(event_id) ON DELETE CASCADE,
       Foreign Key(userA) references event(user_id) ON DELETE CASCADE,
       Foreign Key(userB) references event(user_id) ON DELETE CASCADE))ENGINE=InnoDB;
    

0 个答案:

没有答案