如何将单个用户应用程序制作成多用户应用程序?

时间:2010-06-24 04:30:28

标签: c# database

几年前,我创建了一个简单的应用程序来跟踪我的日常状态。没什么好看的,你只需要添加一行,它会在日期中加入,我会把开始时间,结束时间和我所做的事情放在一起。每个人都笑了,但我坚持了3年。现在,老板看到了我的“组织”程度(这只是一个很长的电子表格视图),并希望我为团队的其他成员扩展应用程序。他还希望看到我们的列表视图,所以这需要以某种方式使它成为共享数据库。我现在正在使用SQlite,因为它全部都在我的机器上,所以我该如何扩展这个应用程序。

我正在寻找想法,欢迎所有人。

更新:我想我的问题更多的是关于拥有数据库服务器而不是我现在拥有的嵌入式数据库。我不需要管理并发等吗?

4 个答案:

答案 0 :(得分:3)

思路:

  • 向db记录(或表示其唯一用户名的字符串)引入用户标识号,以标记他们所属的行。

  • 添加一个登录界面,如果每个人都相互信任而不需要密码 - 只需选择名称。

  • 如果您有业务对象,请在其上放置.UserId属性以跟踪当前用户。

  • 当用户“登录”时,跟踪其用户ID以使用WHERE userid = 5

  • 过滤数据库数据

主要是程序的结构保持不变,并且您引入了跟踪当前用户的用户ID并根据该用户ID适当地过滤其他所有内容以强制执行适当边界的新要求。

更新

如果旧的db表看起来像

TaskId | Start Time  | Length   | Description |

1        10:45 Feb 3   20 min     finish the code
2        10:45 Feb 5   5 m        delete comments
3        10:45 jan 8   2 hr       meeting

然后我的想法提出了一个附加'usreid'列的内容,如:

Userid | TaskId | Start Time  | Length   | Description |

10     | 1        10:45 Feb 3   20 min     finish the code
15     | 2        10:45 Feb 5   5 m        delete comments
30     | 3       10:45 jan 8   2 hr       meeting

你可能有一个支持用户表,如:

UserId | Username | Full name
10       bob1     | Bob Smith
15       mnmn     | Guest user
30       sarah55  | Sarah Baker

答案 1 :(得分:0)

从长远来看,你应该做what jdk suggested,但与此同时,作为权宜之计的解决方案,你可以为每个用户建立一个单独的SQLite数据库。

答案 2 :(得分:0)

以下是我要采取的步骤:

  1. 创建用户/人员表以存储各个用户。列可以包括:名称(第一个和最后一个),位置,电话号码等。每行应具有唯一ID(我建议使用uniqueidentifierIDENTITY int列。
  2. 在包含您的状态数据的表中添加一列。它应与Users表中的唯一ID字段具有相同的类型。如果用户中的列被称为ID,那么UserID就是一个好名字。
  3. 在Users表的主键和“status”表中的新列之间创建foreign key relationship
  4. HTH

答案 3 :(得分:0)

您需要将应用程序移动到集中式数据库服务器。优选地是完整的数据库。这将为您处理并发。