【问题标题】:sql - Best way to add extra fields to a sql databasesql - 向 sql 数据库添加额外字段的最佳方式
【发布时间】:2017-01-15 22:30:06
【问题描述】:

我想知道在 SQL 数据库(在我的例子中是 MySQL 5.7)上管理额外字段的最佳方法是什么,例如我有带有字段的 products 表

create table product(   
 id int auto_increment,
 product_name varcha,r
 description varchar,
 other json,
 primary key(id)
);

但是将来如果我想添加额外的字段,例如重量或高度,我会将信息以 json 格式存储在其他字段中。 这样做是个好主意吗?或者更好地为每个字段创建一个新列。什么时候将数据存储为 json 格式是一个不错的选择?

【问题讨论】:

  • alter tableETL 随你去
  • “什么时候将数据存储为 json 格式是一个不错的选择?” 这是一个与您的其他问题完全不同的问题。 (答案是:当且仅当您有一个非常很好的理由无法正常存储它。)
  • 你不需要一个很好的理由。你只需要一个理由。一个原因可能是您不打算根据该条件执行搜索。

标签: mysql json


【解决方案1】:

好吧,这完全取决于您的需求。

如果这些“额外”字段的结构将逐行更改,则使用类似json 编码的文本可能是一个好主意,只要您永远不需要对它们执行 SQL 操作(例如,对于例如,WHERE 条件)。

无论如何(只要您的额外字段结构在行与行之间是可变的),我建议您使用另一个可以存储所有额外属性的表,例如:

 CREATE TABLE extra_attributes(
     id integer not null primary key,
     product_id integer not null,
     attribute_name varchar(64) not null,
     attribute_value varchar(128)
 );

然后为products表创建一个外键。

如果您的所有产品都有相同的额外字段,最简单的解决方案是将所需的列添加到产品表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2019-06-15
    • 2018-05-07
    相关资源
    最近更新 更多