数据库小白请教一个前端数据录入数据库的问题

2021-09-29 13:37:52 +08:00
 volvo007

问题本身应该非常简单和常见, 但是不知道怎么用合适的语言 /术语去描述这个问题, 所以搜索引擎里面也比较难查.

问题的场景是后台管理系统, 假设做一个商品属性的登记. 现在有一个 商品: A, 前端在登记的时候肯定是一个表单, 要求填写对应的属性, 点击“提交” 按钮🔘之后传到后端, 后端再根据预设的函数录入数据库

但是这个表单里面, 时不时就会碰到一些固定的选项做到下拉菜单里, 例如 商品类别: X, 假设目前类别有 XYZ 三种, 我的想法是后台会有一个专门的表记录这些类别, 类似这种:

商品类 id 商品类名
1 X
2 Y
3 Z

登记后的商品表应该是这样吧:

商品 id 商品名称 商品类 id 商品类名(可选)
1 A 1 X
2 B 3 Z

先说这个 商品类名 好像商品表里面可以不用录入吧, 这个可以理解.

但是, 我前端给用户看到的选项, 肯定是 商品类名 不是 商品类 id, 而后面 商品 数据表里又要求插入这个 商品类 id 的话, 一般是怎么设计的呢?

通过 类名 反查 类名 id 肯定不行吧, 这个例子类名是没有重复的, 但比如 人名 这种肯定会有重复的, 这种反查就不成立了.

应该是非常简单的问题, 望大佬们不吝赐教. 或者提供一些关键词也很感谢

1208 次点击
所在节点    数据库
8 条回复
MonkeyJon
2021-09-29 13:47:04 +08:00
数据库:商品表里存个商品类 id
后端:查询的时候让后端带给你商品类名称不就行了
前端:展示就完事了
lishunan246
2021-09-29 13:47:22 +08:00
前端处理下,用户看到的是类别字符串,但实际提交的是 id
shilianmlxg
2021-09-29 13:51:52 +08:00
@lishunan246 我就做过,但是要定义好一张 key value 对应关系啊,也需要一个接口或者一个死的 json
actar
2021-09-29 13:57:11 +08:00
1. 数据库里面存商品类 id 就可以
2. 进入页面的查询的时候,把商品类 id 和名称都带回来
3. 前端选择数据的时候,展示和获取到的值可以是不一样的。将它绑定起来,你选择了 X ,但是你可以拿到 1 。就像下面那样。

<select>
<option value="1">X</option>
<option value="2">Y</option>
<option value="3">Z</option>
</select>
volvo007
2021-09-29 14:06:59 +08:00
@actar 谢谢回复这么多,还有楼上的各位
这个方法我的顾虑和 3 楼一样, 当类别比较少的时候,可以维护一个写死的 json ;但如果这个表比较长比如几十个、几百个的时候要怎么处理啊
另外这种方法肯定不适用人名这种会有重复值的情况。如果录入人名(比如该商品是某某销售)的情况的话,那就不能用人名了,应该就是人名你可以选,但我旁边会加一个员工号 /身份证号 这种的提醒用户选择了对的人,这样吧
volvo007
2021-09-29 14:10:01 +08:00
@MonkeyJon 谢谢回复,可能我没描述清楚问题,我的需求和你的描述恰好相反……是前端登记,要如何设计能在后端写入 id 而不是商品类别

看了下面的回复,可能在前端通过调用这个类别表,生成一张包含 id 的 json 是比较合适的办法?
volvo007
2021-09-29 14:11:21 +08:00
@actar 啊我傻了,如果这个 option 的值非常多的话,就先访问数据库把它们都拿出来,然后用框架自动生成这个 option 代码就好了吧……不用手写啊😂
limars
2021-09-29 23:47:40 +08:00
3 楼已经给你说了,需要一个接口(后端查询数据库后提供),返回类别名称和对应的 id 的 json 给你。或者是死 json,死 json 一般都是在万年不改的类别上。进了数据库的类别,通常都是接口提供。如果类别太多,甚至你下拉列表那边还要做成可搜索(还是调接口)的样式才行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/805131

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX