怎么解决某个表的字段数量不确定问题

讨论了在数据库设计中如何处理具有不确定数量的字段,如用户的爱好等。提出了几种解决方案,包括使用分隔符进行分割、创建额外的表格以及如何在实际应用中选择最佳方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题: 数据库问题, 比如说有一个记录
姓名 年龄 籍贯 爱好   


当爱好有不确定数量时怎么弄?是建立足够多字段,比如 爱好1 爱好2 爱好3 爱好4   


还是在爱好字段下将不同爱好用分割符号分开,程序中再处理,比如 唱歌,游泳,羽毛球


有别的好办法吗?


-----------------------------------------------------------------------
答案1:


第一爱好、第二爱好、第三爱好。。。可以设置多个爱好,第一爱好不为空就行


-----------------------------------------------------------------------
答案2:


建立足够多字段
***********
这个不可取


———————————————


分隔符
*******
可以考虑




———————————————


也可以另建表存放  
姓名code 行号 爱好
n0001 001 唱歌
n0001 002 游泳
n0001 003 羽毛球
n0002 001 唱歌
n0002 002 游泳


-----------------------------------------------------------------------
答案3:


或者再表一个爱好表:
姓名 爱好
A A0
A A1
A A2
B A0
B A2




-----------------------------------------------------------------------
答案4:


用分割符号|来进行划分


-----------------------------------------------------------------------
答案5:


引用 4 楼 lxq19851204 的回复:
用分割符号|来进行划分




用逗号划分有什么缺点吗?


-----------------------------------------------------------------------
答案6:


引用 5 楼 rkdrc 的回复:
引用 4 楼 lxq19851204 的回复:
用分割符号|来进行划分


用逗号划分有什么缺点吗?




其实也没什么缺点,看个人喜好。


-----------------------------------------------------------------------
答案7:


那就用分割的办法,减少表的数量


-----------------------------------------------------------------------
答案8:


建表是最好的选择...


-----------------------------------------------------------------------
答案9:


另建个表,里面有各种各样的爱好字段一个........然后还有一个字段用于存储个人标识,不能用名字,因为名字可能会有同名.


这样的话就可以根据这个唯一个人标识,在这个表里查到他所拥有的爱好了....


-----------------------------------------------------------------------
答案10:


可以通过Recordset.Fields.count来查询字段的具体数量.


-----------------------------------------------------------------------
答案11:


但是观楼主的题意,其实楼主犯了一个错误,
应该把爱好什么的建成一个字表,通过用户名什么的和主表关联,建议去看看数据库范式,
对数据库的建立会有很大的好处.


-----------------------------------------------------------------------
答案12:


建议楼主将爱好细化成表
 这样条理清晰
 处理起来也方便


-----------------------------------------------------------------------
答案13[推荐答案]:




实际上,如何建表是由数据需要如何处理决定的。而且,作为关系型数据库,不建议在一条记录中搞许多冗余字段,只建一个爱好字段。


如果仅仅由于显示,在同一条记录中的该字段写入所有爱好即可。


如果要利用爱好分类查询,则有多项爱好的人需要多条记录。每一条记录写入一项爱好。如:


张三 20 北京 唱歌
张三 20 北京 游泳
张三 20 北京 羽毛球


当然,也可以将爱好另外建表:


表1:
ID 姓名 年龄 籍贯


表2:
ID 爱好


这样,一个人在表1 中占用一条记录。如果有多项爱好,则在表2 中占用多条记录:


表1中:
00001 张三 20 北京


表2中
00001 唱歌
00001 游泳
00001 羽毛球


分表还是合表,各有利弊,要根据应用的实际情况抉择。


爱好1 爱好2 爱好3 爱好4 这种方式是最差的。例如你要筛选出唱歌,则需要:


select * from yourtable where 爱好1='唱歌' or 爱好2='唱歌' or 爱好3='唱歌' or 爱好4='唱歌'  


topic.csdn.net/u/.../0005aa24-d229-4866-abd0-91e2656c6222.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值