为每个表/集合具有相同表/集合的多个实例的网站设计数据库的正确方法是啥?
Posted
技术标签:
【中文标题】为每个表/集合具有相同表/集合的多个实例的网站设计数据库的正确方法是啥?【英文标题】:What is the proper way to design a database for a website that has multiple instances of the same table/collection for each table/collection?为每个表/集合具有相同表/集合的多个实例的网站设计数据库的正确方法是什么? 【发布时间】:2021-12-27 15:40:55 【问题描述】:所以我有一个网站,分为 5 种不同的模式/部分/模块/隔间/等...
用户可以通过单击图标/链接来切换到每个单独的模式。
每种模式基本上都是网站的不同实例。换句话说,它们都有相同的 UI 组件和后端表/集合。
模式中的数据将永远不必与其他模式的表进行通信。换句话说,不同模式的表之间没有连接。
假设所有模式都需要有一个名为TABLE_A
的表。
设计方案一:
5 种模式中的每一种都有自己的TABLE_A
版本:
MODE_1_TABLE_A
MODE_1_TABLE_A
MODE_2_TABLE_A
MODE_3_TABLE_A
MODE_4_TABLE_A
MODE_5_TABLE_A
设计方案2:
只有一个TABLE_A
有一个额外的列来记录记录属于哪种模式
TABLE_A
Column_ID, ..., Column_Mode
就查询速度等而言,哪种设计是正确的设计?
我选择不使用 noSQL 数据库,即 MongoDB。
每种模式都会有一个页面显示来自TABLE_A
的项目列表。
【问题讨论】:
每种模式都有重复的列吗?如果您有很多重复项,您可以将所有内容放在一个表中并使用数字来引用另一个表?另外,我想一张桌子会使维护更容易吗?不过我不得不承认,我从来没有遇到过需要做出这样的选择的情况,所以除了应该标准化之外,我完全不知道什么对你最有利。 【参考方案1】:我认为这两个选项都不会对查询性能产生重大影响。真正的问题更多在于灵活性和可支持性。
显然维护一个表比维护同一个表的 5 个相同副本更容易。
如果 5 种模式从一个单一的通用模型中分离出来,那么将所有 5 种模式的数据放在一个表中将变得越来越难以支持,并且在未来的某个时候将它们分成 5 个单独的表是不太可能的简单点。
可支持性或灵活性是否对您更重要/更相关,由您决定
【讨论】:
你也可以看看这个问题吗? ***.com/questions/69997802/… 在里面我基本上会问为什么拥有更多的桌子不会更快?以上是关于为每个表/集合具有相同表/集合的多个实例的网站设计数据库的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章