Php 在这种情况下,滑动管柱的替代方案?
我有以下信息要动态显示: 乘积XYZ 非常好 很好 很酷 这些非常好,非常好,非常酷的优点是一个给定的产品,文字,描述的优势,通常以项目符号的形式显示 我想把这些东西单独放在一张名为“优势”的桌子上是没有意义的,因为它永远不会被用来做任何其他东西,尽管它会被显示出来,我把它填得太多了 所以我考虑在这个产品表上创建一个varchar255字段,并允许插入如下值: 很好,;很好,;很酷 在自由格式文本输入字段上 然后在一个php数组上拆分这些Php 在这种情况下,滑动管柱的替代方案?,php,Php,我有以下信息要动态显示: 乘积XYZ 非常好 很好 很酷 这些非常好,非常好,非常酷的优点是一个给定的产品,文字,描述的优势,通常以项目符号的形式显示 我想把这些东西单独放在一张名为“优势”的桌子上是没有意义的,因为它永远不会被用来做任何其他东西,尽管它会被显示出来,我把它填得太多了 所以我考虑在这个产品表上创建一个varchar255字段,并允许插入如下值: 很好,;很好,;很酷 在自由格式文本输入字段上 然后在一个php数组上拆分这些 我的问题是:这是一种更好的方法吗?如果您的文本非常好、非
我的问题是:这是一种更好的方法吗?如果您的文本
非常好、非常好、非常酷是不变的并且它们不会随着产品的不同而变化,我会使用这样的方法:
// text from database, '-' means nothing
$a = 'NGC-------';
if ($a[0] == 'N')
echo 'Very Nice';
if ($a[1] == 'G')
echo 'Very Good';
// and so on ...
顺便说一下,它将在数据库中节省大量空间,仅此而已。:) 如果您的文本非常好、非常好、非常酷
是不变的
,并且它们不会随着产品的不同而变化,我会使用以下内容:
// text from database, '-' means nothing
$a = 'NGC-------';
if ($a[0] == 'N')
echo 'Very Nice';
if ($a[1] == 'G')
echo 'Very Good';
// and so on ...
顺便说一下,它将在数据库中节省大量空间,仅此而已。:) 我想到了这些解决方案:
- 如果您希望按其优势查找产品,并且您的优势少于64个,则数据库中的索引应该位于属性上,并且您应该使用数据类型,另外还可以节省使用的空间
- 如果你不需要索引,优点可能是任何模糊的描述,那么我觉得你的方法可以
- 如果这些组合是有限的,您可以使用所有这些组合创建额外的表,并仅将组合id插入到产品表中。很难插入(检查组合是否已在表中,最终插入新组合并将其id写入产品表),但易于阅读
- 在我工作的一家公司,我们也使用了advantage1,advantage2。。。表中的advantageN列。它不是2NF,但如果您希望用户直接输入这些值(如您在注释中所述),您只需创建advantage1、advantage2。。。格式中的advantageN输入字段和
我想到了这些解决方案:
- 如果您希望按其优势查找产品,并且您的优势少于64个,则数据库中的索引应该位于属性上,并且您应该使用数据类型,另外还可以节省使用的空间
- 如果你不需要索引,优点可能是任何模糊的描述,那么我觉得你的方法可以
- 如果这些组合是有限的,您可以使用所有这些组合创建额外的表,并仅将组合id插入到产品表中。很难插入(检查组合是否已在表中,最终插入新组合并将其id写入产品表),但易于阅读
- 在我工作的一家公司,我们也使用了advantage1,advantage2。。。表中的advantageN列。它不是2NF,但如果您希望用户直接输入这些值(如您在注释中所述),您只需创建advantage1、advantage2。。。格式中的advantageN输入字段和
请定义非常好、非常好和非常酷?是不是很糟糕,好吧,很好?假设这是一个投票系统还是排序?你说的是正确的,那么你可以分解并使用数据库表。这是一个很好的方法,它们是自由格式的文本剪贴画还是一组限定符?听起来像是一个例子。就我个人而言,我觉得频繁地查询数据库以获取包含多个值的短字符串是浪费时间。但这并非闻所未闻。我只是把它放在某种资源文件中,就像一个本地化文件(即使你只有一个)。你应该考虑数据类型设置。请定义非常好,非常好,非常酷。是不是很糟糕,好吧,很好?假设这是一个投票系统还是排序?你说的是正确的,那么你可以分解并使用数据库表。这是一个很好的方法,它们是自由格式的文本剪贴画还是一组限定符?听起来像是一个例子。就我个人而言,我觉得频繁地查询数据库以获取包含多个值的短字符串是浪费时间。但这并非闻所未闻。我只是把它放在某种资源文件中,就像一个本地化文件(即使你只有一个)。你应该考虑数据类型SET,你也可以使用“11011…”格式或者只使用无符号int数据类型并执行位操作。但是,它基本上与SET数据类型相同,只是由DBMS为您进行转换。@JanTuroň是的,字母更容易理解,不需要位操作。:)您也可以使用“11011…”格式,或者只使用无符号INT数据类型并执行位操作。但是,它基本上与SET数据类型相同,只是由DBMS为您进行转换。@JanTuroň是的,字母更容易理解,不需要位操作。:)