database - 由于缺乏 ENUM 支持,CakePHP 的数据库表过多

标签 database design-patterns cakephp

我正在使用 CakePHP 开发应用程序,但我的数据库遇到了一些问题。 问题是我有一些包含这些列的表格:性别(男/女),种类(图像,视频,文本,歌曲,链接,...),...

有很多方法可以解决这个问题:

  1. 创建列出性别、媒体种类的链接表......但我已经有很多表,所以我不想过度使用我的数据库。
  2. 为列选择数据类型 ENUM,但 CakePHP 不喜欢它。
  3. 使用 1,2,3,... 作为这些列的索引并在 PHP 中为每一列映射一个数组(我认为这不是一个好主意,在哪里实例化这些数组?很难知道真正的值(value)数据库中的一个项目,...)。
  4. 为表中的每个项目使用列的真实、完整的文本值,但它是多余的,因此会丢失内存。

我个人认为第4种可能性最好,但我想有其他意见或想法来解决这个问题。

提前致谢!

编辑:我正在考虑另一种解决方法。 如果我为每个列表制作一个表,我将有很多表只有几个项目,这对数据库的维护来说是个问题。 但是,如果我制作一张名为 ex 的 table 。 “app_contants”,它有一个 ID、一个名称和一个类别(例如:“1”、“女性”、“user_sex”)。所有需要列表项的表都将引用该表,如果我想要该表的特定列表,我只需要制作 "$this->AppContants->find('list', array('conditions' => array('category', 'user_sex')));"

你怎么看这个?

最佳答案

有很多解决方案:

例如数组数据源

但我更喜欢使用表示枚举的类常量和静态方法: http://www.dereuromark.de/2010/06/24/static-enums-or-semihardcoded-attributes/

几个月前,我什至在我的烘焙模板中添加了枚举支持。 让它们开箱即用 - 反正没有人需要数据库枚举。

关于database - 由于缺乏 ENUM 支持,CakePHP 的数据库表过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8022473/

相关文章:

java - 如何在 Java 应用程序更新期间实现向后兼容性?

Cakephp 3 : How to add order in queryBuilder for associative data?

sql - 附加字段实体的最佳数据库结构

.net - 在 C# 中从 SQLite 中提取的最快方法

java - 代理和动态代理模式之间的区别

design-patterns - 什么是 'Churchillian knock-off' ?

cakephp - 从 Cakephp 中关联表字段名称 = 'x' 的表中选择

php - 如何使用 cakephp 3.0 在 redis 中保存 session ?

database - 如何通过网络访问Oracle数据库?

php - 我正在使用使用 session 的登录脚本(PHP、MySQL)。我需要创建一个变量,以便我可以在其他页面中使用它?