数据库中一项对应于多项,表该如何设计?

假设我现在的数据是每一个person都对应于n个年份,且每一个person对应的n是不相同的,即

person1: year1, year2, year3
person2: year1, year2
person3: year1, year2, year3, year4

请问此时我应该如何设计表?
或者表结构只能设计成:[person,year],所以上面的数据对应的表即为:

person1 year1
person1 year2
person1 year3
person2 year1
person2 year2
person3 year1
person3 year2
person3 year3
person3 year4
阅读 2.9k
2 个回答

位操作
把年份数字缩小,比如2014为1,2015为2…
然后进行位运算

这个本质上是多对多(一个年份会对应多个人,一个人会对应多个年份):

person:
id,name,...
year:
id,year,...
person_year:
id,person_id,year_id,...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进