0

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

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

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

我目前的想法(坏):

义工郊游表

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

用户表

- int userId
- varchar email
- varchar pass

CarVolunteer信息表

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

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

如果这个问题太模糊或太理论,我很抱歉。我很高兴应您的要求改进我的问题。

4

1 回答 1

2

三个经验法则:

  1. 把它分解成简单的元素
  2. 从用户的角度检查示例工作流程
  3. 确保您没有重复信息

所以 - 我们显然有这样的东西:用户,郊游,车辆,也许还有项目(对于多次郊游正在进行的事情)。然后,您将拥有链接表(参加者 = 郊游、用户等)。

然后你进入细节。这些车辆 - 是否由一位用户负责携带?它们有多大?我们是否需要确保有足够的座位供 # 名用户参加?我们是否关心每辆车上都有谁?

最后,确保您没有重复信息。可以从他的用户 ID 中查找 Dave 的名字,并且他的车中的座位数量可能不会因外出而改变(直到他换车......哎呀 - 将其添加到工作流程中)。

您的样本在初稿中看起来不错,只是希望通过该过程对其进行几次改进。哦 - 如果可能的话,有一些脚本:

  1. 生成表定义
  2. 添加一些测试数据
  3. 对数据库运行基本测试

这会有很多帮助。如果您使用的是 PostgreSQL,像pgtap这样的东西可以帮助测试。

于 2012-08-11T08:04:32.000 回答