哪种方法更好?

时间:2019-07-30 12:27:09

标签: mysql database database-design

哪种方法更好地设计方法1或方法2,我必须维护所有语言的标题字段。

方法1:

heads (table)
- id
- status
- created_at
- updated_at

heads_metadatas (table)
- id
- head_id
- language_id
- title

方法2:

heads (table)
- id
- language_id
- title
- status
- created_at
- updated_at

1 个答案:

答案 0 :(得分:1)

根据您在评论中所说的,方法1是唯一的选择:

  • 标题可以翻译成多种语言
  • 标题的所有译文都具有相同的状态和创建/更新的日期(请参见注释)

实际上,如果您尝试方法2,则您的主键是id + language_id的组合,并且冒着某天某人将在两个记录中指向同一头的每条记录中创建不同状态的风险

我个人认为创建日期,状态等是元数据,所以我认为您实体的命名不是很好-我可能会有headshead_translations

注意:我还要在两个表上设置一个创建/更新(如果您是软删除,则将其删除)日期。