Yog*_*oga 5 schema database-design application-design
假设我有一个用于博客文章posts
、 和架构的表
id
author
title
content
Run Code Online (Sandbox Code Playgroud)
每个都post
可以属于一些categories
id
name
descrtiption
Run Code Online (Sandbox Code Playgroud)
所以一篇博文可以属于多个类别。
显然title
and content
in posts
、 andname
和description
incategories
可以翻译成不同的语言。
那么,考虑到现有的 db 模式设计,扩展对多语言应用程序的支持的最有效和最合理的方法是什么?
最少的工作是在每个表中放置一个语言代码。那么问题是没有办法证明,比如说,post 612(英语)是 post 943(西班牙语)的翻译。
为了达到这种水平的交叉引用,有必要将帖子的存在与其内容分开。会有这些表:
Language
Language_id
Name
Post
Post_id
Category
Category_id
PostCategory
Post_id
Category_id
CategoryLanguage
Category_id
Language_id
Name
Description
...
PostLanguage
Post_id
Language_id
Title
Content
...
Run Code Online (Sandbox Code Playgroud)
理想情况下,我们希望同时翻译帖子及其类别。使用声明性约束很难同时强制两者的存在。如果这是一项要求,则将强制执行推入应用程序会更简单。
显示帖子时,相应的类别应该是相同语言的类别。为此,可以允许每个用户选择一种语言。需要有规则来确定如果一个项目没有被翻译成用户的首选语言会发生什么。也许定义了系统默认语言?