SQL 结构,唯一列的动态两列

SQL Structure, Dynamic Two Columns or Unique Colmuns

我不确定哪个更快。我需要存储可能的数据列表。

目前我有一个 SQL table 具有以下正在使用 php 访问的结构。

boxID
place
name  -- (serialNum, itemNum, idlock, etc, etc)
data
--(Note: The Primary Key here would be boxId, place, name, and data, to prevent duplicate data.)

我这样设置的原因是为了防止为每个命名数据创建列。将来有可能有 5-10 个不同的命名数据或更多。也可以在一周内为一个命名数据存储 1,000 - 10,000 个数据条目。它也会被搜索,就像当我从特定的 serialNum 获得位置时,然后获取与该位置相关的所有数据。 (特定的 serialNum、itemNum、idLock 等)

但我担心的是,我的结构可能比为每个命名数据创建一个命名列要慢。例如:

boxID
place
serialNum
itemNum
idLock
etc
etc
--(Note: Not even sure how to add keys to this if i would do it this way)

总结一下:哪个练习更快更好?(请记住,我仍然是 SQL 的新手)

最佳做法是将数据建模为具有特定属性的实体。通常一个实体最多有几十个属性。实体通常变成 tables,而属性通常变成列。也就是说,物理模型和逻辑模型往往非常相似。

可能还有其他的考虑。例如,一行可以包含的列数是有限制的——如果您有更多的列,则需要另一种解决方案。同样,如果数据是稀疏的(即大多数值为 NULL),那么拥有大量未使用的列可能是一种浪费 space。也就是说,以另一种格式存储它更有效。 SQL 服务器为此原因提供了稀疏列。

我的建议是使用命名列以直观的方式设计 table。每周 1,000 - 10,000 行的数据量不算多。这变成每年 50,000 - 500,000 行,SQL 服务器应该能够轻松处理该数量。你没有说你有多少个命名实体,但是 table 数百万或数千万行对于现代数据库来说是相当合理的。