我正在创建一个工具,用于在CMS中编辑网页。 该工具的主要目标是为用户提供全面的灵活性。因此,可以在其中编辑大量属性 - 这些属性(片段):
langbutton_menu_border_color_left
langbutton_menu_border_width_left
langbutton_menu_border_style_left
langbutton_menu_border_color_right
...你得到漂移。到目前为止,我有238个这样的属性,主要是整数和短字符串。 我现在要为数据创建一个mysql表。我有几年的Web开发经验,甚至考虑将238列放入mySQL表中也是绝对的禁忌。但是第二个想法,我开始思考,为什么不呢?
这对我来说是最方便的事情,因为我正在集成这个新工具的CMS中有一组现成的输入元素,它们与单个数据库列相连。存储属性的任何其他方式(例如,将它们分组以使“边界”属性存储在一个字段中)将需要对集合进行大量更改,我非常希望避免 - 我正处于一个大项目中并且确实在工作日和黑夜。
我会根据XML定义创建和更改表,因此我可以使用管理238列表。 存储效率并不重要 - 预期的页数不会超过50-100。 除了使用主键一次加载一个页面外,我不需要对表格进行任何查询。
那么,mySQL专家,有没有认真反对在238列中存储这类数据?你会期待问题,指数内存使用,类似的东西吗?
通常,我会将各种属性转换为完整的CSS字符串,并构建可以解析和处理这些字符串的类 - 这会大大减少数量。但考虑到时间限制?
答案 0 :(得分:4)
需要独立于其他列查询和更新这些列中的多少列?这些列是否涉及与其他表的关系,或者它们都只是数据?
我不知道您的使用计划,但在某些情况下,将所有这些数据存储为BLOB更有意义。如果它总是被一起检索而不会参与任何查询,我就会这样做。
答案 1 :(得分:4)
理论上,mySQL现在仅限于表中的4096列(考虑其他约束,即默认的NULL值等)。所以,你有很大的优势。 就个人而言,在网络开发中,我试图保留#列的列数< 50.我看到有100多列的表格,但它很有效,但维护这些表格非常困难。 如果您不必搜索该列,请考虑在php数组上进行序列化并在TEXT中存储值。它更快,更灵活。
答案 2 :(得分:1)
我之前尝试过这样的方式。 很可能没有人会在一个元素上使用所有238个属性。
恕我直言,你最好向用户建议可用的属性。 然后让用户通过从列表中选择它们并设置它们的值来组合可用属性。 然后,您可以将用户输入组合到文本数组中,如[property:value,property:value],并将其粘贴到您需要设置样式的元素上的单个列中。