artist.sql 7.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. CREATE DATABASE IF NOT EXISTS wy_artist DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. USE wy_artist;
  3. -- ------------------------------
  4. -- 1. 艺人基础信息表(优化:移除跨服务外键,冗余核心用户字段)
  5. -- ------------------------------
  6. CREATE TABLE `artist` (
  7. `id` INT AUTO_INCREMENT PRIMARY KEY,
  8. `user_id` INT NOT NULL COMMENT '关联auth服务的user.id(艺人必须是平台用户,仅逻辑关联,无外键)',
  9. `user_username` VARCHAR(50) NOT NULL COMMENT '冗余auth.user.username(避免频繁调用auth服务)',
  10. `user_phone` VARCHAR(20) COMMENT '冗余auth.user.phone(艺人联系电话,非实名认证)',
  11. `artist_name` VARCHAR(100) NOT NULL COMMENT '艺人名(对外展示名称)',
  12. `avatar` VARCHAR(255) COMMENT '艺人头像URL',
  13. `header_image` VARCHAR(255) COMMENT '艺人页头图(网页端顶部背景图)',
  14. `gender` TINYINT COMMENT '性别:1-男,2-女,3-团体',
  15. `birthday` DATE COMMENT '生日',
  16. `region` TINYINT COMMENT '艺人所属地区(如中国内地、韩国)',
  17. `genre` VARCHAR(100) COMMENT '流派风格(多个用逗号分隔,如流行,摇滚,电子)',
  18. `company` VARCHAR(100) COMMENT '所属公司/厂牌(如华谊兄弟、SM娱乐)',
  19. `introduction` TEXT COMMENT '艺人介绍(10-1000字,用于艺人详情页)',
  20. `invitation_code` VARCHAR(50) COMMENT '邀请码(用于平台邀请艺人入驻)',
  21. `wechat` VARCHAR(50) COMMENT '微信号(内部联系用,需加密存储)',
  22. `status` TINYINT DEFAULT 0 COMMENT '艺人账号状态:0-待审核,1-已通过,2-已拒绝,3-已冻结',
  23. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  24. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  25. UNIQUE KEY `uk_artist_name` (`artist_name`), -- 艺人名唯一
  26. UNIQUE KEY `uk_user_id` (`user_id`), -- 一个用户只能绑定一个艺人账号
  27. INDEX `idx_user_id` (`user_id`) -- 逻辑关联索引
  28. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='艺人基础信息表';
  29. -- ------------------------------
  30. -- 2. 艺人实名认证表(无跨服务依赖,仅关联本地artist表)
  31. -- ------------------------------
  32. CREATE TABLE `artist_real_auth` (
  33. `id` INT AUTO_INCREMENT PRIMARY KEY,
  34. `artist_id` INT NOT NULL COMMENT '关联本服务的artist.id',
  35. `real_name` VARCHAR(50) NOT NULL COMMENT '真实姓名(艺人身份证姓名)',
  36. `phone` VARCHAR(20) NOT NULL COMMENT '绑定手机号(用于实名认证验证)',
  37. `email` VARCHAR(100) NOT NULL COMMENT '邮箱(用于接收审核结果)',
  38. `nationality` VARCHAR(50) NOT NULL COMMENT '国籍/地区(如中国、美国)',
  39. `id_card` VARCHAR(100) NOT NULL COMMENT '证件号(建议AES加密存储,保护隐私)',
  40. `face_auth_status` TINYINT DEFAULT 0 COMMENT '面部识别状态:0-未认证,1-已认证',
  41. `auth_status` TINYINT DEFAULT 0 COMMENT '实名认证状态:0-待审核,1-已通过,2-已驳回',
  42. `auth_time` DATETIME COMMENT '实名认证通过时间',
  43. `auth_result` TEXT COMMENT '实名认证结果(通过/驳回原因)',
  44. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  45. FOREIGN KEY (`artist_id`) REFERENCES `artist` (`id`) ON DELETE CASCADE,
  46. UNIQUE KEY `uk_artist_auth` (`artist_id`),
  47. UNIQUE KEY `uk_id_card` (`id_card`) -- 身份证号唯一(加密后)
  48. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='艺人实名认证信息表';
  49. -- ------------------------------
  50. -- 3. 艺人站外社交信息表(无跨服务依赖)
  51. -- ------------------------------
  52. CREATE TABLE `artist_external_info` (
  53. `id` INT AUTO_INCREMENT PRIMARY KEY,
  54. `artist_id` INT NOT NULL COMMENT '关联本服务的artist.id',
  55. `platform_name` VARCHAR(50) NOT NULL COMMENT '站外平台名称(如微博、抖音、B站、Spotify)',
  56. `platform_account` VARCHAR(255) NOT NULL COMMENT '平台用户ID/URL/昵称(如微博昵称:XXX)',
  57. `fans_count` BIGINT DEFAULT 0 COMMENT '平台粉丝数(定期同步更新)',
  58. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  59. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  60. FOREIGN KEY (`artist_id`) REFERENCES `artist` (`id`) ON DELETE CASCADE,
  61. UNIQUE KEY `uk_artist_platform` (`artist_id`, `platform_name`)
  62. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='艺人站外社交平台信息表';
  63. -- ------------------------------
  64. -- 4. 音乐人审核申请表(优化:移除跨服务外键,增加冗余字段)
  65. -- ------------------------------
  66. CREATE TABLE `artist_audit_record` (
  67. `id` INT AUTO_INCREMENT PRIMARY KEY,
  68. `user_id` INT NOT NULL COMMENT '关联auth服务的user.id(申请人,仅逻辑关联)',
  69. `user_username` VARCHAR(50) NOT NULL COMMENT '冗余auth.user.username(审核人可直接查看)',
  70. `artist_id` INT COMMENT '关联本服务的artist.id(已存在的艺人ID,可为空)',
  71. `apply_type` TINYINT DEFAULT 1 COMMENT '申请类型:1-新注册,2-信息修改,3-重新申请',
  72. `apply_reason` TEXT COMMENT '申请原因(如:更新个人信息、重新提交认证材料等)',
  73. `apply_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '申请时间',
  74. `audit_status` TINYINT DEFAULT 0 COMMENT '审核状态:0-待审核,1-已通过,2-已驳回',
  75. `audit_result` TEXT COMMENT '审核结果(详细说明)',
  76. `reject_reason` TEXT COMMENT '驳回原因(详细说明)',
  77. `audit_time` DATETIME COMMENT '审核时间',
  78. `audit_user_id` INT COMMENT '关联auth服务的user.id(审核人,仅逻辑关联)',
  79. `audit_username` VARCHAR(50) COMMENT '冗余auth.user.username(审核人姓名,便于追溯)',
  80. `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  81. `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',-- 移除跨服务外键,仅保留逻辑索引
  82. INDEX `idx_user_id` (`user_id`),
  83. INDEX `idx_artist_id` (`artist_id`),
  84. INDEX `idx_apply_time` (`apply_time`),
  85. INDEX `idx_audit_status` (`audit_status`),
  86. INDEX `idx_audit_user_id` (`audit_user_id`)
  87. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='音乐人审核申请记录表';