帮助mysql查询或数据库设计来帮助我实现这一目标

时间:2011-03-16 20:05:33

标签: mysql database-design

我一直是网站的长期读者,但之前没有发布,我希望有人可以提供帮助。我正在开发一个多用户Web应用程序,它允许用户将潜在客户信息捕获到我们的数据库中。将在应用程序内为用户提供默认字段,例如名称和电子邮件,这些字段将分组到数据组中。

但是,我希望允许用户根据需要创建任意数量的自定义字段,并允许用户选择这些自定义字段属于组的数据组。我正在努力找出实现这一目标的最佳方法。

我目前在数据中有3个表格如下:

datagroups

group_id   group_name    order
1          test group 1    2
2          test group 2    1


datafields

field_id      field_name    group
   1           field 1        2
   2           field 2        1
   3           field 3        2


customdatafields

custom_field_id     field_name      group
      1               custom 1       1
      2               custom 2       2

我真的很困惑我将如何在3个表中创建一个查询,以便我可以在显示后生成一个视图:

test group 2
- field 1
- field 3
- custom 2

test group 1
- field 2
- custom 1

我需要记住的一件事是,我可以允许用户创建自定义数据组,并将其纳入其中。

对此的任何意见都将非常感激。

由于

2 个答案:

答案 0 :(得分:1)

  

但是我想允许用户使用   创建尽可能多的自定义字段   希望并允许他们选择   哪些数据组是这些自定义字段   属于小组。

您刚刚让每个临时用户成为您的数据库设计师。

这听起来像个好主意吗?

应该是表中的一行的任何内容最终都会成为单个列中的逗号分隔字符串。 数据迟早会看起来像这样。

Home: 123-456-7890, Work: 123-456-0987, Cell: 123-454-5678
H: 123-454-6453, W: 123-432-5746, 800: 1-800-555-1212
234-345-4567, 234-345-6785
323-123-4567 Don't call before 10:00 am

为什么人们这样做?因为普通人不知道如何设计数据库。他们会做最方便的事情,现在只是以任何方式放置数据,并找出以后如何处理它。

哎呀,SO上的大多数程序员都不知道如何设计数据库。只需阅读[数据库]问题一周左右。 (包括这一个的十几个变体。)

想要使用MySQL或任何SQL dbms。如果你不能做一个适当的建模工作,SQL dbms只会让你在你的时间之前死去。

答案 1 :(得分:0)

好吧,你描述的输出不是表格式的...所以不是直接从sql语句得到的。

然而,您应该可以使用UNION获取列表,可能是这样的:

select g.group_id, g.group_name, f.field_name
from datagroups g, 
    (select field_name, field_id, group from datafields 
     union
     select custom_field_name, field_id, group from customdatafields 
    ) f
where f.group = g.group_id
order by g.order