微信用户和手机号用户在两张表,怎么相互绑定

处理微信用户绑定手机号,手机号用户绑定微信的问题

现在棘手的是 微信用户和手机号用户是在两张表中
更棘手的是, 现在的微信用户和手机号用户下面都有相关联的数据,这如果要是绑定的话该如何操作啊。

还有啊 ,如果想这两张表合成一张表,有什么思路没有啊 ,大神们,求指教 ,感谢

阅读 4.6k
4 个回答

你可以对微信用户和手机号用户看作是2种登录方式。
我建议不要合成一个表。
这是我的用户表简约设计

member

CREATE TABLE `member` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `tel` bigint(20) DEFAULT NULL COMMENT '手机号码',
  `password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '登录密码',
  `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '账号状态 0:正常',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `member_tel_unique` (`tel`),
  KEY `member_tel_status_index` (`tel`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

member_data

CREATE TABLE `member_data` (
  `member_id` bigint(20) NOT NULL COMMENT '用户编码',
  `sex` enum('0','1','2') COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '性别 0=>女生 1=>男生 2=>未知',
  `nick_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '姓名/昵称',
  `img` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户头像',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  UNIQUE KEY `member_data_member_id_unique` (`member_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

member_authorized

CREATE TABLE `member_authorized` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `member_id` bigint(20) NOT NULL COMMENT '用户编码',
  `prefix` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '第三方名称',
  `token` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '第三方标示',
  `data` text COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '授权获得的用户信息',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `member_authorized_prefix_index` (`prefix`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

如果微信用户有独立的用户id的话,那就不好整理了。就只能是看做为2个用户了。如果将2个用户合并为一个,我感觉可以写一个功能。去提示用户是否将2个合并,让用户自己选

当绑定手机的时候,保存手机用户的记录到微信用户表。也就是说为微信用户表新增一个字段关联手机用户表。

建议最终一个主表,微信一个表里面有用户id这个字段,主表里面用户的id是主键自增

两个表搞定。

  1. 用户表

属性:用户ID,昵称,头像,等等用户的属性,不要手机号码什么的

  1. 登录方式表

属性:主键ID,type(手机or微信openid以及其他类型),openid(手机号或微信openid等其他类型用到的id,varchar(40)),用户ID,banned(是否禁止该方式登录)

type+openid做一个索引。
绑定的话就在该表插入一条数据即可,不会混乱

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏