php - 存储列表 : in files or MySQL?

标签 php mysql data-storage

存储以下类型的列表通常是更好的方法:

array(
   'category'=>array(
      'key'=>'value',
      'key'=>'value'
    ),
   'category'=>array(
      'key'=>'value',
      'key'=>'value'
    )
);

存储这些列表的更有效方法是 lists.php 文件还是 MySQL 中的序列化条目?

最佳答案

这取决于你的 mysql 表结构:

  • 如果您的表是NORMALIZED,那么序列化数据并存储它会破坏规范化。

但除此之外,为什么不创建两个表,一个存储类别,另一个存储引用该类别的键值对。

CREATE TABLE Categories (
   CID INT,
   ***
   PRIMARY KEY (CID)
)ENGINE=InnoDB;

CREATE TABLE KeyValues (
   Category INT,
   Key varchar(100),
   Value varchar(100,
   FOREIGN KEY Category REFERENCES Categories(CID)
)ENGINE=InnoDB;

并且您可以根据您的结构进一步规范化键值表。我没有故意选择主键,因为这取决于您是否正在对表进行规范化。添加自动增量主键也可以。

这样可以更轻松、更快速地选择数据。当您有序列化数据时,如果您需要进行某种计算,您首先需要在 PHP 端获取数据,将其反序列化并进行计算,您只需一个查询即可完成相同的操作。

关于php - 存储列表 : in files or MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14654897/

相关文章:

android - 在Android应用程序中显示大量数据(大多数文本)

iphone - 我应该将 sqlite 数据库文件写入文档目录还是库/缓存吗?

mysql - Magento SQLSTATE[42S01] 错误

mysql - 如何获取今天插入或更新的行,没有时间戳列

如果语法错误,MySQL 触发器结束

database - 红黑树的缺点是什么?

php - 如何在客户端从 SOAP header 读取数据

php - 是否可以在 IIS7 上将 php 包含在 html 中?

php - Yii2-完整性约束违规 – yii\db\IntegrityException

php - RewriteRule 创建 500 内部服务器错误