数据库设计:如何支持多语言网站?

2024-01-05

假设我有一张桌子:

TABLE: product
=================================================================
| product_id | name           | description                     |
=================================================================
| 1          | Widget 1       | Really nice widget. Buy it now! |
-----------------------------------------------------------------

如果我想提供多语言支持,最好的方法是什么?

可能的解决方案:

  1. 在上表中添加“语言”栏;这将指示特定记录的语言。 (我认为这对我来说不是一个选择,因为其他表将使用product.product_id作为其FK。)
  2. 删除产品表中的所有可翻译列(在上面的示例中为product.name 和product.description),并将其放入具有“语言”列的单独表中。该新表将使用product.product_id 作为 FK。 (我不会在应用程序的第一个版本中支持多语言。此解决方案意味着我必须执行额外的 JOIN 才能获取最初支持的语言的值。)
  3. 还有什么我没有考虑到的吗?

我会选择解决方案 2。

此选项将最大限度地减少您的第一个版本的工作,并将减少未更改的列之间的重复。

它确实需要额外的JOIN,但这是一个简单的键连接,因此不会对您的性能产​​生太大影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库设计:如何支持多语言网站? 的相关文章

  • System.IndexOutOfRangeException:索引超出了数组的范围[重复]

    这个问题在这里已经有答案了 我正在开发一个 ATM 软件作为家庭作业 我想知道今天处理的交易总量 为此我编写了以下代码 public decimal getDayTransaction int accountid string date s
  • 如何使用WAMP登录phpMyAdmin,用户名和密码是什么?

    根 这个词是什么意思php我的管理员 http en wikipedia org wiki PhpMyAdmin 每当我写作时localhost phpmyadmin在地址栏上 我被要求输入用户名和密码 但我不知道它们是什么 我不记得何时何
  • PHP 7.0和MySQL启动错误“未定义符号:mysqlnd_allocator in Unknown”

    即使在运行时 在自定义编译版本的 PHP7 上也会收到此警告php v 尝试了发布的所有解决方案 什么可能导致这种情况 PHP 警告 PHP 启动 无法加载动态库 usr lib php 20151012 pdo mysql so usr
  • 将 .NET 小数存储到 MySQL 中的最佳字段定义是什么?

    我需要将小数存储到 MySQL 中 它可以具有不同的精度 因此我很想知道哪种 MySQL 字段类型绝对等同于 NET 的字段类型decimal http msdn microsoft com en us library system dec
  • 将 MS-Access 表单结果导出到 Excel?

    我对 Access 有点陌生 我在将 MySQL 和 Oracle 与 PHP 集成以创建基于 Web 的数据库搜索引擎方面拥有一些经验 但我很难理解 Access 的某些概念 我有一个小型数据库 其中包含大约 200 个条目 每个条目有
  • 当子查询具有组列时,MySQL 8 不使用 INDEX

    我们刚刚从 mariadb 5 5 迁移到 MySQL 8 一些更新查询突然变得很慢 经过更多调查 我们发现当子查询有组列时 MySQL 8不使用索引 例如 下面是一个示例数据库 桌子users维护每种类型用户的当前余额 表 帐户 维护每天
  • 分区表查询仍然扫描所有分区

    我有一个包含超过十亿条记录的表 为了提高性能 我将其分区为30个分区 最常见的查询有 id 在他们的 where 子句中 所以我决定对表进行分区id column 基本上 分区是这样创建的 CREATE TABLE foo 0 CHECK
  • 将语句插入 SQL Server 数据库

    最近几天我试图找到这个错误 但没有成功 我正在尝试在数据库中插入一个新行 一切都很顺利 没有错误 也没有程序崩溃 My INSERT声明如下 INSERT INTO Polozaj Znesek Uporabnik Cas Kupec Po
  • 本地 SQLite 与远程 MongoDB

    我正在设计一个新的 Web 项目 在研究了一些旨在可扩展性的选项后 我提出了两个数据库解决方案 为可扩展方式精心设计的本地 SQLite 文件 每个 X 用户一个新的数据库文件 因为写入将取决于用户内容 不存在跨用户数据依赖性 远程 Mon
  • MySql 西班牙语字符数据

    我有一个包含西班牙语字符的数据库 为了填充数据库 我从字符编码 UTF 8 的客户端页面获取值 当我在 mySql 数据库中插入值时 行包含更改的数据 例如 如果我插入 M xico 数据库中的条目是 M xico 其影响是当我对指定 M
  • UTF-8、PHP 和 XML Mysql

    我在解决这个问题时遇到了很大的问题 我有一个编码 latin1 swedish ci 的 mysql 数据库和一个存储名称和地址的表 我正在尝试输出 UTF 8 XML 文件 但在使用以下字符串时遇到问题 Otiv gen它被输出为Otiv
  • MySql 5.7 函数 UUID() 默认排序规则 - 非法混合排序规则

    Problem MySQL uuid 默认排序规则与配置连接排序规则不进行比较 我有一个使用字符集创建的数据库 表 字段 utf 8和排序规则utf8 polish ci my cnf 如下 init connect SET NAMES u
  • 第一次如何配置postgresql?

    我刚刚安装了 postgresql 并在安装过程中指定了密码 x 当我尝试做的时候createdb并指定我收到消息的任何密码 createdb 无法连接到数据库 postgres 致命 用户密码身份验证失败 同样适用于createuser
  • PHP 和 MySql 检查表是否为空

    我有点菜鸟 而且我很难过 我需要一些代码来搜索数据库表以查找与 id 变量匹配的行 我需要抓取该表 描述 中的一个字段 如果它为空 我需要显示一条消息 如果不是另一条消息 这是我的代码 我知道我需要添加 mysqli 转义字符串 只需从内存
  • MongoDB 中递归文档的结构和查询语法?

    我最近开始在工作项目中研究 MongoDB 我对 JSON 和 MongoDB 的查询结构相当陌生 所以我希望你们中的一位能够提供一些说明 我已将这个问题翻译成 Excel 术语 因为它很常见并且很好地代表了我的问题 如果我尝试将 Exce
  • 检测 MySQL 中的 utf8 损坏字符

    我有一个数据库 其中有一堆损坏的 utf8 字符分散在多个表中 字符列表不是很广泛 AFAIK 修复给定的表非常简单 update orderItem set itemName replace itemName 但我无法找到检测损坏字符的方
  • mysql 准备好的语句错误:MySQLSyntaxErrorException

    我使用准备好的语句编写了选择语句 每次尝试运行都会出现此错误 我如何克服这个错误 我的jdbc连接器是mysql connector java 5 1 13 bin jar 我的代码 public Main add ad to getAdD
  • 在 Bluemix 中激活 PHP 扩展

    这纯粹是 Bluemix 问题 我的代码在本地主机上顺利运行 但是当我将其迁移到 Bluemix 时 我的数据库连接失败了 检查日志 我发现问题 调用未定义的函数 mysqli init HTTP 响应 500 我发现扩展已被禁用以使其更小
  • 如何检测数据库类型?

    我需要确保我连接的数据库是 MySQL 而不是 PostgreSQL 或 Microsoft SQL Server 我怎样才能知道正在使用哪种类型的数据库 第一个提示可能是如果您尝试使用 mySQL 数据库驱动程序连接到 PostgreSQ
  • Elastic Beanstalk 上的 Django + MySQL - 查询 MySQL 时出错

    当我在 Elastic beanstalk 上托管的 Django 应用程序上查询 MySQL 时 出现错误 错误说 admin login 处出现操作错误 1045 用户 adminDB 172 30 23 5 的访问被拒绝 使用密码 Y

随机推荐