【发布时间】:2013-03-13 09:30:32
【问题描述】:
在我的数据库设计中,我倾向于将一些用作 ROLE 或 TYPE 的变量存储为 SMALLINT。
例如:
CREATE TABLE `house` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` smallint(11) NOT NULL,
在 PHP 中,我会这样做:
define('HOUSE_SMALL_TYPE', '0');
define('HOUSE_MEDIUM_TYPE', '1');
所以在 PHP 中,我在 SELECT 查询中:
$this->db->query("SELECT * FROM house
WHERE type = ?;", HOUSE_SMALL_TYPE);
我的问题是:
- 在 PHP 部分,有没有更好的方法来做到这一点?
- 在 MySQL 本身中,MySQL 是否也具有全局定义功能(如 PHP 中的定义)?
我也想做点什么
SELECT * FROM house WHERE type = HOUSE_SMALL_TYPE;
在 MySQL 查询中。
我的目的是,当我在 MySQL 中执行 SELECT 时,我不会继续将值 0、1、2 与其真正含义进行映射。只是方便查看表值,无需更改结构表和字段。
【问题讨论】:
-
我想你在找ENUM。
-
定义“更好的方式”的标准。您到底想改进什么?
-
@Rikesh 意味着我必须使用 ENUM 更改我的数据库类型,对吗?我的表有些已创建,但我会在下一个创建表时考虑到这一点。
-
@HendryH。您也可以阅读我链接的帖子。你的问题很模糊,所以如果你看起来像比使用它。
-
@Your Common Sense 实际上,我只是好奇你们是如何在 php 中做到这一点的。我考虑任何替代方案,因为我仍处于早期开发阶段。