0

我正在使用 PHP,MySql。

例子 :

$type = array(
    "owner",
    "agent",
    "representative",
);

存储在 DB 中的首选方式是什么?

  1. 将其存储为索引,0 表示“所有者”,1 表示“代理”,...
  2. 将其与键值一起存储。重新创建上面的代码

    $type = array(
        "OWNER" => "owner",
        "AGENT" => "agent",
        "REPRESENTATIVE" => "representative",
    ); 
    

    然后将值存储为“OWNER”、“AGENT”。

我倾向于使用方法 2,因为对我来说它增加了可读性。

方法一

  • - 可读性低
  • + 良好的性能
  • 方法 2(枚举)

  • + 高可读性
  • -性能低下
  • - 添加关键需要改变数据库设计
  • 最佳做法是什么?你们用什么?

    4

    3 回答 3

    3

    如果您使用的是一组相对有限的值,请使用ENUM数据类型。它可以让您以人类可读的形式进行读写,但在幕后,它通常会将其存储为 int。

    于 2013-09-17T02:07:16.900 回答
    2

    如果您的问题是存储在数据库中的正确方法,那么答案将是通过称为normalization的过程索引值。创建一个表permission_types,如果需要,创建一个桥接表。如果您有一个表users,您将添加一个表,该表user_permission_types将列userID作为user表的外键,并将列permissionID作为表的外键permission_types。这两个列一起将成为user_permission_types表的主键。

    这样做会消除数据库中的所有冗余。

    于 2013-09-17T02:18:38.730 回答
    2

    我更喜欢方法 1。在性能方面,它比方法 2 更好。如果您担心可读性,我会创建一个名为permission_types

    id | value
    1    Owner
    2    Agent
    

    然后,您可以加入该表并获得可读性和性能,因为您不需要搜索字符串。此外,如果您愿意,您可以轻松添加更多权限类型。

    于 2013-09-17T02:09:02.750 回答