gpt4 book ai didi

mysql - Mysql数据库中的多语言分类标题

转载 作者:行者123 更新时间:2023-11-29 03:06:18 25 4
gpt4 key购买 nike

只是寻求一些建议。

给不想通读的人的总结:创建一个只有一个 auto_increment 列的表是一个合理的想法吗?

详细信息:

我通常在数据库中管理多种语言,为对象的数据及其语言描述使用单独的表。例如:

Table: MyObject (id auto_increment, height, width, depth. PK = id)
Table: MyObjectDescription (id, language, description. PK = id, language)

两个 id 字段对应,所以我有这样的数据:

MyObject
+----+--------+-------+-------+
| id | height | width | depth |
+----+--------+-------+-------+
| 1 | 10 | 10 | 20 |
| 2 | 5 | 6 | 7 |
+----+--------+-------+-------+

MyObjectDescription
+----+----------+-----------------+
| id | language | description |
+----+----------+-----------------+
| 1 | EN | First object |
| 1 | IT | Primo Oggetto |
| 2 | EN | Second object |
| 2 | IT | Secondo Oggetto |
+----+----------+-----------------+

我的问题是我的某些数据库对象没有数据除了描述。

例如; Category 被简单地定义为一个 id 和一个文本描述。我可以使用像 MyObjectDescription 表这样的单个表,但是我必须自己生成 id,因为我无法使用 auto_increment 列。这也会增加出现竞争条件错误表锁定问题 的可能性。或者,我可以使用另一个表,例如 MyObject,它只有一个 auto_increment 列...

我的疑问是:使用单列表来模拟序列是否合理?或者它只是简单的愚蠢?另请注意,我的框架包含自动将对象表连接到描述表的逻辑。

感谢任何输入/想法。

加雷思

最佳答案

使用 MyObject (id)

除非您将这些对象与数据库的其余部分隔离开来,否则您将需要由 id 单独 组成的 PK,以便它可以被 FOREIGN KEY 引用。

即使在孤立的情况下, key 的实现也证明了单独的表是合理的。没有它,您将不得不以某种方式生成新的 id,同时防止并发事务为不同的对象生成相同的 id。显而易见的方法是锁定整个表(并选择 MAX+1),但这会破坏可伸缩性。 IMO,最好有一张单独的 table 。如果你cluster它在 InnoDB 下,无论如何都只是一个 B 树。

关于mysql - Mysql数据库中的多语言分类标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14625183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com