在这种情况下,滑动字符串的替代?

时间:2012-09-29 21:55:22

标签: php

我有动态显示的以下信息:

产品XYZ

非常好

非常好

很酷

那些非常好,非常好,非常酷的是给定产品,文本,描述优势的优点,通常以子弹的形式显示。

我认为将它们存储在一个名为advantage的单独表中是没有意义的,因为尽管显示它,它永远不会被用于其他任何东西,并且我把它填充得太过分了。

所以我考虑在这个产品表上创建一个varchar255字段,并允许插入值,如:

非常好;非常好;很酷

在自由格式的文本输入字段中。

然后在php数组上拆分它们。

我的问题是:它出在那里,是一种更好的方法吗?

2 个答案:

答案 0 :(得分:2)

我想到了这些解决方案:

  • 如果您希望查找产品的优势并且您的优势少于64个,那么数据库中的索引应该在属性上,您应该使用SET数据类型,此外它还可以节省空间使用

  • 如果您不需要索引并且优势可能是任何模糊的描述,那么我发现您的方法可以。

  • 如果这些组合是有限的,您可以使用所有这些组合创建额外的表,并将组合ID仅插入到产品表中。很难插入(检查组合是否已经在表中,最终插入新组合并将其ID写入产品表),但易于阅读。

  • 在我工作的公司中,我们还使用了表格中的方法优势1,优势2 ... advantageN列。它不是2NF,但如果您希望用户直接输入这些值(如您在注释中所述),您可以在表单中创建advantage1,advantage2 ... advantageN输入字段并KISS

答案 1 :(得分:1)

如果您的文字very nice, very good, very coolConstant并且他们没有在产品之间进行更改,我会使用以下内容:

// text from database, '-' means nothing
$a = 'NGC-------';

if ($a[0] == 'N')
    echo 'Very Nice';

if ($a[1] == 'G')
    echo 'Very Good';

// and so on ...

顺便说一下,它会为你的数据库节省大量空间,仅此而已。 :)