ben*_*lal 12 php database key-value-store
我想知道价值管理清单是否有良好的做法.例如,我有一个数据库表日志如下:
--------------- | logs | |-------------| | id | | idLogType | | message | | date | ---------------
我的问题是关于字段"idLogType".我知道枚举不是处理这种字段的好方法,因为如果我想添加新值,我必须改变表格.所以我要创建一个值列表.
你有什么建议来处理价值观?
class LogTypeValues {
const LOGTYPE_CREATION = 1;
const LOGTYPE_EDITION = 2;
const LOGTYPE_DELETION = 3;
private $_logTypes = array();
public function __construct() {
$this->_logTypes[self::LOGTYPE_CREATION] = "Creation";
$this->_logTypes[self::LOGTYPE_EDITION] = "Edition";
$this->_logTypes[self::LOGTYPE_DELETION] = "Deletion";
}
public function getId($logType) { ... }
public function getLogType($id) { ... }
}
$request = $pdo->prepare('INSERT INTO logs SET idLogType = :idLogType, ...');
$request->execute(array('idLogType' => LogTypeValues::LOGTYPE_CREATION));
Run Code Online (Sandbox Code Playgroud)
------------ | logTypes | ------------ | id | | logType | ------------
<?php
$request = $pdo->prepare('INSERT INTO logs SET idLogType = 1, ...');
$request->execute(array());
Run Code Online (Sandbox Code Playgroud)
------------ | logTypes | ------------ | id | | logType | ------------
class LogTypeValues {
const LOGTYPE_CREATION = 1;
const LOGTYPE_EDITION = 2;
const LOGTYPE_DELETION = 3;
}
Run Code Online (Sandbox Code Playgroud)
你对这三种方法有什么看法?
我最喜欢的解决方案是:
在数据库中存储日志类型:
CREATE TABLE logTypes (
id (SMALLINT, PK)
code VARCHAR(32) UNIQUE
)
Run Code Online (Sandbox Code Playgroud)
在代码中创建常量
class logTypes {
const CREATE_USER = 1;
const EDIT_USER = 2;
...
}
Run Code Online (Sandbox Code Playgroud)
并选择同步策略:
例子:
SELECT * FROM logs JOIN logTypes USING logtype_id WHERE logType LIKE "% CREATION"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1705 次 |
| 最近记录: |