首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:使用主数据库和辅助数据库设计应用程序

MySQL:使用主数据库和辅助数据库设计应用程序
EN

Stack Overflow用户
提问于 2016-06-17 16:19:41
回答 1查看 178关注 0票数 2

我正在为一家面包店公司构建一个应用程序,使用CodeIgniter (PHP)和MySQL。该公司拥有约250家特许经营公司。在设计数据库时,我考虑了以下几个方面:

  • 每个特许经营都必须有自己的数据,因为它们是相互独立的。
  • 他们所有的产品都是由所有的专营权共享的,这意味着只有一个菜单
  • 每一家特许经营公司都会有自己的股票计数。
  • 应用程序将有3种不同的仪表板:每个特许经营的管理仪表板和销售仪表板,以及只针对主要公司的一个仪表板,其中将包含所有特许经营报告。

我设计了一个主数据库,包括他们的所有产品、专营权和将访问应用程序的用户。每个用户将被分配给一个专营权和一个仪表板。

然后,每个特许经营将有一个二级数据库,与他们的股票计数,销售,客户等。所有的特许经营将有自己的数据库。

这样,应用程序将按照以下方式工作:

  • 用户将访问应用程序登录页面,并将被要求输入特许id,他的登录和密码。
  • 所有销售将“复制”,以取消主数据库,使公司能够跟踪他们的所有专营权。

我的问题是:

  1. 假设所有数据库都托管在同一台服务器上,那么为每个专营权建立单独的数据库是一种良好的做法吗?最好给每个数据库分配不同的用户,还是只分配一个用户就足够了?
  2. 我是否可以将所有专营权数据库的名称存储在主数据库上,然后创建一个自定义登录模型,该模型将设置第二个数据库连接,根据该数据库将专营权分配给哪个数据库?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-17 16:32:21

1)这将是一种糟糕的做法。

  • 通过拥有多个数据库,您必须将表设计和将来的更改复制到所有这些数据库中,而不是在一个地方进行更新。如果您发现自己复制了数据,您可能会遇到设计问题,并且会增加许多复杂性。
  • 如果将所有数据存储在单个数据库中,则可以向表中添加"store_id“字段,指定数据属于哪个存储区。对于单个存储用户,可以通过此字段进行筛选。如果用户负责多个存储,您可以轻松地将其数据单独合并到一个登录中,因为数据在同一个数据库和表中可用。
  • 由于数据是统一的,所以不必重复数据,而且整个公司的报告和仪表板更容易生成和维护。

2)使用一个数据库,这种额外的工作和复杂性是不必要的。你可以消除大量的问题和疑难解答。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37886144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档