我有动态显示的以下信息:
产品XYZ
非常好
非常好
很酷
那些非常好,非常好,非常酷的是给定产品,文本,描述优势的优点,通常以子弹的形式显示。
我认为将它们存储在一个名为advantage的单独表中是没有意义的,因为尽管显示它,它永远不会被用于其他任何东西,并且我把它填充得太过分了。
所以我考虑在这个产品表上创建一个varchar255字段,并允许插入值,如:
非常好;非常好;很酷
在自由格式的文本输入字段中。
然后在php数组上拆分它们。
我的问题是:它出在那里,是一种更好的方法吗?
答案 0 :(得分:2)
我想到了这些解决方案:
如果您希望查找产品的优势并且您的优势少于64个,那么数据库中的索引应该在属性上,您应该使用SET数据类型,此外它还可以节省空间使用
如果您不需要索引并且优势可能是任何模糊的描述,那么我发现您的方法可以。
如果这些组合是有限的,您可以使用所有这些组合创建额外的表,并将组合ID仅插入到产品表中。很难插入(检查组合是否已经在表中,最终插入新组合并将其ID写入产品表),但易于阅读。
在我工作的公司中,我们还使用了表格中的方法优势1,优势2 ... advantageN列。它不是2NF,但如果您希望用户直接输入这些值(如您在注释中所述),您可以在表单中创建advantage1,advantage2 ... advantageN输入字段并KISS
答案 1 :(得分:1)
如果您的文字very nice, very good, very cool
为Constant
并且他们没有在产品之间进行更改,我会使用以下内容:
// text from database, '-' means nothing
$a = 'NGC-------';
if ($a[0] == 'N')
echo 'Very Nice';
if ($a[1] == 'G')
echo 'Very Good';
// and so on ...
顺便说一下,它会为你的数据库节省大量空间,仅此而已。 :)