3

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

例子:

// 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

这是我到目前为止的计划。我还是新手,所以我可能做错了。而且只有五组。直到我把它浓缩了一些。

4

2 回答 2

1

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

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

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

于 2013-01-09T06:00:03.153 回答
0

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

例如,您对用户的描述将我引向了错误的方向,我起初考虑的是软件的“普通”用户。基本上是名称、登录信息和类似的东西。我永远不会拆分不同的表,因为它确实使登录、会话处理等任务变得非常复杂。

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

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

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

于 2013-01-09T07:05:07.497 回答