SQL架构创建(头脑风暴帮助?)

时间:2012-08-11 06:27:36

标签: mysql sql postgresql database-schema

我正在尝试找出我的SQL数据库的表/字段的最佳组织。

让我解释一下产品的功能。我的组织每天在不同时间每周5天安排志愿者服务。我正在制作一个程序,允许用户登录,选择志愿者的日期/时间,并在选定的时间注册志愿者。用户将选择他们带来的志愿者数量和他们带来的汽车数量。每个志愿者外出至少有2辆车和3个人。用户必须在获得批准的列表中。

我不知道如何最好地组织所有这些数据。我无法为汽车用户表和他们带来的志愿者数量添加字段,因为这可能会根据他们注册的日期而改变。

我目前的想法(糟糕):

VolunteerOutings表

- DateTime time
- Array of userIds (will be used to access CarVolunteerInfo)

用户表

- int userId
- varchar email
- varchar pass

CarVolunteerInfo表

- DateTime time
- int userId
- int car #
- int volunteer #

多人可以报名参加一次郊游,我希望能够看到每个郊游的注册人以及他们带来了什么。此外,我希望能够运行报告,以查看他们注册的所有过去和将来的外出。

如果这个问题太模糊或理论上,我很抱歉。我很乐意根据您的要求改进我的问题。

1 个答案:

答案 0 :(得分:2)

三条经验法则:

  1. 将其分解为简单元素
  2. 从用户的角度检查示例工作流程
  3. 确保您不重复信息
  4. 所以 - 我们显然有类似的东西:用户,郊游,车辆和项目(对于多次外出的事情)。然后,您将拥有链接表(与会者=外出,用户等)。

    然后你会详细介绍。这些车辆 - 是一个用户负责带来每个?它们有多大?我们是否需要确保有#个用户参加?我们关心每辆车的进展情况吗?

    最后,请确保您没有重复信息。 Dave的名字可以从他的用户名中查找,他的车内座位数量可能不会从郊游变为郊游(直到他改变车辆......哎呀 - 将其添加到工作流程中)。

    你的样本看起来没问题,只是希望经过几次完善这个过程。哦 - 如果可能的话有一些脚本:

    1. 生成表格定义
    2. 添加一些测试数据
    3. 针对数据库运行基本测试
    4. 这会有很多帮助。如果您使用PostgreSQL,pgtap之类的东西可以帮助您进行测试。