- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是一名开发人员,之前从未从事过数据库工作(设计数据库)。我正在为员工管理系统设计一个数据库,该系统是一个使用 MySQL 作为其数据库的 Node.js + Express 应用程序。
我已经有了所需的表格和列,但我要处理的未知数仍然很少。这是我目前的计划,我需要你的意见。
使用此应用程序的最终用户将是中小型公司。这些公司不会共享数据库中的表。因此,如果有一个名为 EmployeeCases 的表,我计划为每个现有公司或注册此应用程序的新公司创建一个新的 EmployeeCases 表。我打算将该表命名为 EmployeeCases_989809890 ,其中“989809890”将是公司 ID(或客户 ID)。因此,如果我们有 3-4 家公司为我们注册,那么所有表(至少是公司使用的表)都将被重新创建并命名为 TableName_CompanyId。我的问题,这是一个好方法吗?有没有更好的办法?
员工的所有数据都保存在 Employee 表中,包括他们的登录名和密码。现在,DB 中的每个 Employee 表都将被命名为 Employee_CompanyId(按照我上面的计划)。我的问题是,当员工登录时,我如何知道要查询哪个 Employee 表?或者我应该从 Employee 表中删除登录名并创建一个通用的 Users 表来存储所有员工? Users 表也将 CompanyId 作为其列之一,我将从那里读取 CompanyId,它将用于查询其他表。
任何关于此类设计的引用资料、网站或博客将不胜感激。
谢谢。
最佳答案
我不推荐这种方法,我认为你应该:
A) 将所有信息放在同一个表中,并有一个 companyId 列来排序
或
B) 每个公司都有单独的数据库,并使用代码使用适当的数据库。
问题是,使用您的方法,如果您有同一个表的多个不同名称的副本,您将很难维护您的应用程序。例如,如果您决定向其中一个表添加一列,则必须编写与表实例一样多的 SQL 脚本。您的所有唯一标识符也会很糟糕。
以下是每种设计的一些优点/缺点:
A) 将所有信息放在同一个表中,并有一个 compagnyId 列来排序
优点:
缺点:
B) 每个公司都有单独的数据库,并使用代码使用适当的数据库。
优点:
缺点:
使用此“两步登录”的应用程序示例是 Slack ,当您登录时,您首先输入您的团队域,然后输入您的用户凭据。
我认为Google Apps for Work作为相同的方法。此外,我认为我合作过的大多数 CRM 都有一个单独的数据库供他们的客户使用。
最后,我想将您转至 this other question on stackoverflow链接到一个有趣的例子。
关于mysql - 在为 SaaS 应用程序设计数据库架构时需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38711213/
如何有效地设计一个C++模块化程序?如何学习? 最佳答案 对于初学者,您可能希望采取“暴力”过程: 1. 在一个文件中写一个简单的main函数。 2. 增加一些功能,先编译再测试。 3.重构(在谷歌中
前言 有人说现在记事类app这么多,市场这么卷,为什么还想做一个笔记类App? 一来,去年小孩刚出生,需要一个可以记录喂奶时间的app,发现市面上没有一款app能够在两步内简单记录一个时间,可能i
我正处于 Web 应用程序的设计阶段,该应用程序允许用户创建工作请求,并且工作人员可以针对这些请求投入时间。该应用程序还将为主管提供报告功能,以获取每日总计、报告,并说明花费的时间、“成本分配”。 我
前言:很多刚刚接触编程的人都不知道怎么下手编写程序,特别是学习了新的知识点,不知道有什么用,那么本文将以简单的存储结构及简单的运算,条件语句,分支语句,循环语句结合,带来一个双人对战版五子棋,这是一
我正在尝试通过 C++ 多线程解决网络流量问题。 给定一个网络(所有节点都由弧连接,每个弧连接2个且只有2个结束节点,一个是输入节点,另一个是输出节点,每个节点可以有多个输入弧和输出弧),每个节点需要
我有一个关于编程和文件的问题。 while(current!=NULL) { if(current->Id_Doctor!='\0') { current=current->next;
下面的‘C’语句执行什么操作? star = star ^ 0b00100100; (A) 切换变星的第 2 位和第 5 位。 (B) 清除变量星的第 2 位和第 5 位以外的所有位。 (C) 设置除
我写了下面的代码: #include int main() { int a, b; printf("Enter values of a and b\n"); scanf(" %d%d "
我正在将 C 代码编程到 PIC 板上。我的问题是如何让我的程序计算按下按钮(RB0)的时间。然后它会显示所花费的时间并将其显示在液晶显示屏上。以毫秒为单位计算。下面是到目前为止我的代码。 /
我是一名优秀的程序员,十分优秀!