正确的方法来建模用户组

时间:2013-01-09 05:48:31

标签: mysql database database-design model

所以我有这个应用程序,我正在起草,我开始考虑我的用户。好吧,我最初的想法是为每个组类型创建一个表。我一直在想这个,但我不确定这是最好的方式。

示例:

// Users

Users [id, name, email, age, etc]

// User Groups

Player [id, years playing, etc]

Ref [id, certified, etc]

Manufacturer Rep [id, years employed, etc]

所以每个人都会创建一个帐户,但每个用户都会有一个不同的组。他们也可以在多个不同的群体中。每个组都有自己的不同列的列表。那么最好的方法是什么?可以说我有5组。我需要8个表+一个将每个表连接到用户表的关系表吗?

我只是想确保在构建之前这是组织它的最佳方式。

编辑: 玩家将拥有关于他们使用的装备,他们玩过的球队,他们去过的赛事的专栏。

裁判将获得有关他们所拥有的证书以及他们所提供的事件的信息。

制造商代表将获得有关他们在其代理公司中的位置的信息。

父母可以获得有关他们参与这项运动多长时间的信息,也许是与他们是父母的用户的关系。

仅作为一个例子。

编辑2:

**Player Table
    id
    user id
    started date
    stopped date
    rank
**Ref Table
    id
    user id
    started date
    stopped date
    is certified
    certified by
    verified

**Photographer / Videographer / News Reporter Table
    id
    user id
    started date
    stopped date
    worked under name
    website / channel link
    about
    verified

**Tournament / Big Game Rep Table
    id
    user id
    started date
    stopped date
    position
    tourney id
    verified

**Store / Field / Manufacturer Rep Table
    id
    user id
    started date
    stopped date
    position
    store / field / man. id
    verified

这是我到目前为止计划的内容。我还是新手,所以我可能完全错了。它只有五组。直到我把它浓缩一些才更新。

2 个答案:

答案 0 :(得分:1)

虽然我发现有这么多实体彼此不同很奇怪,但我会忽略这一点并提出问题。

这取决于您需要的组标准,如果您描述了每个组都有自己的列和信息,我猜您的设计是好的,特别是如果您需要数据库中可读形式的信息。如果您需要单个表中的所有组,则必须将组相关信息保存在某种对象中,可以是blob,XML字符串或任何其他形式,但是您将无法使用数据库过滤这些条件。

在关系数据库中,我会使用您描述的设计来完成它。

答案 1 :(得分:0)

表的设计在很大程度上取决于软件的要求。

E.g。你对用户的描述让我走错了方向,我最初想的是一个软件的“普通”用户。基本上是名称,登录信息和类似的东西。我永远不会分裂不同的表,因为它确实使登录,会话处理等任务变得非常复杂。

令我感到惊讶的另一点是,您希望将设备存储在这些用户表的列中。通常,一个人与他的设备之间的关系不是1比1,并且在大多数情况下,不同设备的数量会有所不同。因此,您通常会在用户和他们的设备之间建立关系(1:n)。因此,您将设计一个设备表,并参考所有者的用户ID。

但是,在了解了应用程序中包含哪些数据以及数据之间存在哪些关系之后,表格的设计等等是相当明确的。

好消息是,您的数据模型和数据库设计将随着时间的推移而发展。尝试从基本模型开始,涵盖大部分用例。然后慢慢添加更多用例/方面。 只要您处于规划和早期实施阶段,您就可以轻松更改数据库设计。