数据库设计:很多行与很多表?

PLa*_*ane 8 mysql sql database-design

我正在为一个系统做这个数据库设计的东西,我需要将一些可变长度数组存储到mysql数据库中.

阵列的长度(最多)为数百(如果不是数千).

将定期创建新阵列,可能每天数十个.

  1. 我应该将这些数组存储在一个很快会变得巨大的表中
  2. 为每个数组创建一个新表,很快就有一个庞大的数字或表?
  3. 别的什么?(就像数组值的格式化文本列一样)

澄清,1.粗略表示

CREATE TABLE array (id INT, valuetype VARCHAR(64), ...)
CREATE TABLE arr_values (id INT, val DOUBLE, FK array_id)
Run Code Online (Sandbox Code Playgroud)

和2.

CREATE TABLE array (id INT, valuetype VARCHAR(64),...)
CREATE TABLE arr_values (id int, val DOUBLE, FK array_id) -- template table
CREATE TABLE arr1_values LIKE arr_values ...
Run Code Online (Sandbox Code Playgroud)

arr_values将用作通过连接到完整数组来查询的数组.关于为什么某些方法比其他方法更好的任何想法?

mea*_*gar 26

几张桌子中有很多行.为每个新结构/记录创建一个新表是绝对不正确的,也是使用关系数据库的最糟糕的方法.

实际上,几乎在你的代码动态创建表的任何时候,你都在做一些非常糟糕的事情.


Pad*_*ddy 7

正如对这些问题的所有答案一样,它总是在某种程度上取决于您的最终结果需要是什么,但就个人而言,我总是倾向于使用单个表而不是动态创建的表 - 这使得查询更加简单.当你查看数据库模式时,它也使得它更简单(我认为) - 成千上万的表可能使得在直接访问数据库时更容易找到所需的内容.

此外,如果您发现需要在某个位置使用另一个字段扩展"数组",则意味着将有一个数据库表要更改,而不是很多.