相关疑难解决方法(0)

将分隔列表存储在数据库列中真的那么糟糕吗?

想象一下带有一组复选框的Web表单(可以选择其中的任何一个或全部).我选择将它们保存在存储在数据库表的一列中的逗号分隔值列表中.

现在,我知道正确的解决方案是创建第二个表并正确地规范化数据库.实现简单的解决方案更快,我想快速获得该应用程序的概念验证,而无需花费太多时间.

我认为节省的时间和更简单的代码在我的情况下是值得的,这是一个可辩护的设计选择,还是我应该从一开始就将其标准化?

更多上下文,这是一个小型内部应用程序,实际上取代了存储在共享文件夹中的Excel文件.我也在问,因为我正在考虑清理程序并使其更易于维护.在那里有一些我并不完全满意的事情,其中​​一个是这个问题的主题.

database database-design database-normalization

346
推荐指数
8
解决办法
6万
查看次数

无论顺序如何,REGEXP都匹配另一个组列表中的组字符串 - SQL

这是场景.如何利用REGEXP模拟IN运算符来匹配右侧左侧的所有值,而不管两侧的字符串顺序如何.还ANSI SQL可以使用左连接和子查询来实现解决方案.

样品表:

Parent table, Child table, Parent_Child.为了不在这个问题上占用更多空间,我只在这里发布了一个问题Group_Concat Child query by Parent.

PID     NAME        CHILDREN    
1       dad john    dave,jill,lina
2       mum sandy   maryam,jack 
3       dad frank   henry,jill 
4       mum kate    maryam  
5       mum jean    dave
Run Code Online (Sandbox Code Playgroud)

预期结果:选择让所有孩子都参与其中的父母.

PID     NAME        CHILDRENREXGEX
3       dad frank   jill,henry
4       mum kate    maryam
5       mum jean    dave
Run Code Online (Sandbox Code Playgroud)

这是REGEXP SQL解决方案:现在问题在于,如果左侧顺序/顺序与右侧不匹配,则不会返回正确的结果.

查询:

select 
    x.pid, x.name, x.children as childrenRexgex
from
    (select 
         p.pid, p.name, …
Run Code Online (Sandbox Code Playgroud)

regex mysql sql group-concat

5
推荐指数
1
解决办法
1422
查看次数