应该使用一个数据表还是多个数据表?

数据表 地区 歌手,想问下那个方案更合理

方案一: 只有一个歌手表里面有地区地段 ;

id:1  singer:林俊杰  area:新加坡 age:22 Introduction:1981年3月27日出生于新加坡,

方案二:;

singer表
id:1  name:林俊杰  area_id:1 age_id:1 Introduction_id:1 
area 表
id:1 name:新加坡
age 表
id:1 name:22
Introduction
id:1 name:1981年3月27日出生于新加坡,

模板内会使用 地区 作为搜索条件,我该如何选择方案几?数据会有很多条以及为什么该这样选择呢?谢谢

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 6

这个要看你这个地区是什么属性了
1.普通字符串:可以随便填写
2.普通字符串:不能随意填写
3.组合字符串:如省市区
第一个可以不用分表,第二个和第三个需要分表

4年前 评论
李小明 (楼主) 4年前

经验限制了想象力的我,觉得最多两个表,singerarea,因为 area 是可复用的,标准化的,可以作为独立存储的对象。

ageinteger 类型,introduction 不能标准化,所以都不需要再定义一个类型(表),可以直接搜索。

4年前 评论
李小明 (楼主) 4年前
Complicated

无所谓哪种是对的,看你的需求,如果你经常是查询name这个字段,其他的都是附带,或者偶尔查一下,,那就可以把name单独存一个表,其他的信息用id,然后连表查,如果singer的各种信息都需要用的,,一查就查整个人的Info,,那方案1还是比较合适的

4年前 评论
lochpure

我这边通常是会有一个地区表,地名+编码;然后其他信息就在User用户表中了

4年前 评论
Complicated

@Jouzeyu 恩,我的意思是说,,其实怎么设计表,是根据每个项目的情况来的,你做项目多留意留意,,以后自然会有知道选哪种设计方案了

4年前 评论
lochpure 4年前
qiuyuhome

可以去看看 数据库的 三范式, 答案就揭晓了.

第二范式: 没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分.

你的 area 字段, 应该拿出来.

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!