gpt4 book ai didi

MySQL - 存储单个属性的不同数据类型的最佳方式是什么?

转载 作者:行者123 更新时间:2023-11-29 15:17:47 25 4
gpt4 key购买 nike

我有 3 个对象:ReportReportConditionConditionValue。关系是:Report 有许多 ReportConditions(例如 personID、姓名和出生日期),ReportCondition 有许多 ConditionValues >(例如查询personID的多个ID)。理想情况下,ConditionValue 由 2 个字段组成:IDvalue。由于报表的条件可能引用各种对象和属性(如上面的示例),条件值的数据类型可能是整数(包含业务数据的表中某些其他对象的主键 ID),stringsdates(目前没有计划其他类型)。

我看到 3 个解决方案:

  1. ConditionValue.value 设为 varchar 并存储该值所具有的任何数据类型。这似乎是最简单的。
  2. ConditionValue 记录中创建单独的 intValuestringValuedateValue 字段,并将相关值存储在相关的数据类型字段接受每条记录有 2 个空字段。
  3. 为每种条件数据类型创建单独的表 - 这对于查询来说似乎过于复杂。

varchar 方法正确吗?在这种情况下最好的解决方案是什么?

最佳答案

选项 1 很受欢迎,俗称 Entity-Attribute-Value .

这有一些缺点。

  • 对所有内容使用 varchar 意味着您不能依赖数据类型来强制有效性。例如,没有什么可以阻止您存储“banana”作为应该是数字或日期的值。
  • Varchar 需要更多空间来存储数字或日期值。
  • 您将无法使用 UNIQUE 或 FOREIGN KEY 等约束。

但是,这可能是两害相权取其轻。

最终,“最佳”解决方案取决于您如何查询它。

关于MySQL - 存储单个属性的不同数据类型的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59568789/

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