sql - 一个有很多字段的 mysql 表还是很多(数百个)字段较少的表?

标签 sql mysql

我正在为客户设计一个系统,他可以在其中为自己销售的各种产品创建数据表单。 他将使用的字段数不会超过 600-700(最坏情况)。看起来他可能会在 400 - 500(最大值)的范围内。

我想到了两种创建数据库的方法(使用元数据):

a) 为每个产品创建一个表,该表将仅包含该产品所需的字段,这将导致数百个表但仅包含每个产品的必要字段

b) 使用一个包含所有可用表单字段(从当前 300 到最大 700 的任何范围)的单个表,导致一个表将包含许多字段,其中只有大约 10% 将用于每个产品条目(a产品通常不应使用超过 50-80 个字段)

哪种解决方案最好?请记住,表的表维护(创建、更新和更改)将使用元数据完成,因此我不需要手动更改表。

谢谢!

/**** 更新 *****/

只是一个更新,即使经过了这么长时间(并且积累了很多额外的经验),我仍需要提及不是normalizing你的数据库是个糟糕的主意。此外,未规范化的数据库几乎总是(根据我的经验总是如此)也表明应用程序设计存在缺陷。

最佳答案

我会有 3 个表:

  • 产品

    • 编号
    • 姓名
    • 你还需要什么
  • 字段

    • 编号
    • 字段名称
    • 您可能需要的任何其他东西
  • 产品字段

    • 编号
    • 产品编号
    • field_id
    • 字段值

关于sql - 一个有很多字段的 mysql 表还是很多(数百个)字段较少的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2340778/

相关文章:

mysql - 字符串截断长度,但不允许切碎单词

mysql - 如何将数字 (120) 存储在数据库的 FLOAT(10,8) 列中?

python,你不能使用8位字节串

php - MySQL 错误,连接时表/别名不唯一

java - 如何在使用java创建新帐户之前检查用户名是否已存在于sql数据库中

mysql - ActiveRecord::Base.connection.execute 受影响的行

java - 从 getCursorName 函数读取数据时出现异常 "positioned update not supported"

sql - 如何根据特定顺序选择每个组的顶行?

MySQL INNER JOIN 查询多个匹配项,除非 if

mysql - 第 5 行警告 : mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in/home/a8107556/public_html/index. php