gpt4 book ai didi

php - 枚举 vs 引用表 vs 查找类

转载 作者:IT老高 更新时间:2023-10-29 00:11:40 27 4
gpt4 key购买 nike

当我为约会网站设计MySQL 数据库 时,我对如何存储引用数据产生了疑问。目前数据库有33张表,需要引用的字段有将近32个。我们还必须考虑其中许多元素需要翻译。

在阅读了一些意见之后,我几乎拒绝使用枚举,例如:

CREATE TABLE profile (
'user_id' INT NOT NULL,
...
'relationship_status' ENUM('Single','Married') NOT NULL,
...
);

通常我会使用像这样的引用表:

CREATE TABLE profile (
'user_id' INT NOT NULL,
...
'relationship_status_id' INT NOT NULL,
...
);

CREATE TABLE relationship_status (
'id' INT NOT NULL,
'name' VARCHAR(45) NOT NULL,
PRIMARY KEY ('id')
);

但是创建 32 个表可能有点过头了,所以我正在考虑用 PHP 编写代码,如下所示:

class RelationshipStatusLookUp{
const SINGLE = 1;
const MARRIED = 2;

public static function getLabel($status){
if($status == self::SINGLE)
return 'Single';
if($status == self::MARRIED)
return 'Married';
return false;
}
}

你怎么看?因为我猜它可以提高查询的性能,也可以使整个站点的开发更容易。

谢谢。

最佳答案

绝对是避开 ENUM 恕我直言的好主意:why ENUM is evil .从技术上讲,查找表将是首选解决方案,尽管对于简单的值,PHP 类可以工作。出于与 ENUM 相同的原因,您确实需要注意这一点;如果你的集合中的值增长,它可能变得难以维护。 (关于“同居”、“离婚”、“民事伴侣关系”、“丧偶”等)。使用 PHP 类查询值列表也很重要;可以使用反射,但不如简单的 MySQL SELECT 简单。这可能是在性能成为问题之前我不会担心性能的情况之一。首先为您的代码/应用程序使用最佳解决方案,然后根据需要进行优化。

关于php - 枚举 vs 引用表 vs 查找类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9723194/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com