gpt4 book ai didi

mysql - DB 中的变体数据类型

转载 作者:行者123 更新时间:2023-11-29 23:51:53 25 4
gpt4 key购买 nike

我正在寻找一种在我的数据库(可能是mysql)中拥有变体列的方法,我知道这是不可能的,但我需要的是一种模拟这种行为的方法。

我有一对简单的表格,例如:

#task table
(
id int ...,
date timestamp,
owner int
)

#info table
(
id int ...,
relative int, #points to Task
name varchar,
value VARIANT
)

基本上,我需要将可变数量的信息字段关联到每个任务,并且每个 information.value 将具有不同的类型(字符串、日期时间、 bool 值和整数)。

我计划为每种类型创建四列,而不是单个 VARIANT,并填充正确的列。但该表会增长很多(600Mb/月),我认为这将是巨大的空间浪费。

有人知道更好的方法来实现这一目标吗?

我不知道这是否会让情况变得更糟或更好,但我会在 django 中做到这一点!

最佳答案

您正在实现一种称为实体属性值 (EAV) 模型的模型。您已经描述得很好,以防您不知道它是什么。

就数据结构而言,字符串类型在具有NULL值时占用的空间很小。但其他类型确实会占用空间,因此会浪费空间。您可以将所有内容存储为字符串 - 数字存储为数字,日期存储为 YYYY-MM-DD,并且可以使用单个字符串。不过,您确实失去了 native 数据类型的一些灵 active 。

一般来说,EAV 模型的计算成本很高。每月 600 MB 的数据量相当可观。在 MySQL 中,通过千兆字节的数据将记录重新组合在一起可能会很痛苦(它的 group by 性能很差)。我通常推荐混合 EAV 模型,其中“常规”记录存储常用属性,而 EAV 部分仅用于不常见属性。

关于mysql - DB 中的变体数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25596853/

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