用户提交表单后,对应信息应如何添加到MySQL关联公司表中
问题解答
1. 表单提交后company表的存储内容
直接存储用户提交的branch_location值匹配到的**数字型branch_id**到company表的branch_id字段即可,不需要存储location文本内容。处理逻辑如下:
- 用户提交表单内的branch location值后,先到
company_location表匹配该值对应的branch_id - 匹配成功后直接将拿到的
branch_id写入company表的branch_id字段即可
2. 不需要新增branch_name字段
完全没必要在company表新增空值branch_name字段再做更新,这种冗余存储会额外增加数据一致性维护成本:后续如果修改company_location里的分支机构名称,还需要同步更新所有关联的company表记录,极易出现数据不一致问题,直接通过branch_id关联查询即可拿到对应的分支机构名称。
3. 关联表的字段选择规则
不是强制要求必须用数字类ID,但数字ID是工业界通用的最优实践,核心原因如下:
- 数字型字段的索引查询、关联性能远高于字符串字段
- 分支机构名称后续可能发生变更,用ID关联的话仅需要修改
company_location单表的名称字段即可,不需要改动其他关联表 - 字符串可能存在空格、特殊字符、重名等问题,匹配容错率低,数字ID全局唯一,不会出现这类问题
如果强行用名称字段关联,后续出现数据异常的概率会高很多,不建议这么做。
4. 特定用户的分支机构关联查询方法
用INNER JOIN关联两张表,加上user_id筛选条件即可,示例SQL语句如下:
SELECT c.user_id, c.company_id, c.company_name, cl.branch_id, cl.branch_location FROM company c INNER JOIN company_location cl ON c.branch_id = cl.branch_id WHERE c.user_id = 待查询的目标用户ID;
如果需要查询所有用户对应的分支机构信息,去掉WHERE条件即可。
内容的提问来源于stack exchange,提问作者msk285
相关产品推荐
相关产品推荐

