首页 > 解决方案 > 创建具有相同列或一个主表的数据库表

问题描述

我正在建立一个带有大型数据库的网站,有 6 种类型的数据,所以 6 种形式将数据传递到数据库。每个表单都有唯一的参数,6 个表单中有 4 个具有相同的字段,并且字段可以包含多个数据:电子邮件、地址和电话可以在 4 个表单上是多个。

首先,我想创建 4 个不同的表,例如:store_contacts、warehouse_contacts、delivery_contacts 等,以保持不同类型的分离。所以我会有 4 个包含相同字段的类似表:

id、电话、电子邮件、地址、store_id/delivery_id/等

我已经阅读了创建包含它们的表格的更好做法,表格联系人:

id、类型、type_id、电话、电子邮件、地址

从类似的问题:

  1. 两个具有相同列的表或一个具有附加列的表?
  2. https://softwareengineering.stackexchange.com/questions/302573/one-wide-table-or-multiple-themed-tables
  3. https://dba.stackexchange.com/questions/46852/multiple-similar-tables-vs-one-master-table

但我不确定表格是否会在以后更改,是否会添加新字段以仅用于存储或仅用于交付。除了联系人之外,我在其他领域也有类似的情况。

每次我需要提取特定类型的数据或需要删除它们时,使用类型进行查询会不会很舒服?插入很多行会不会很乱?如果将为“存储”创建一个新字段,其他人在该字段上包含 NULL 是否可以?

标签: webdatabase-design

解决方案


可能您应该阅读一些有关关系实体或面向对象 - 继承的信息,具体取决于您正在使用的范例。

例如,您可以在这样的文章中了解

通常,出于多种原因,您应该将联系人存储在单独的专有实体中。部门特定的字段可以存储在每个表中,前提是您确定它们在其他实体中没有用处。例如:warehouse_contacts 将有一个虚构的员工 id 字段来表示仓库中负责参加给定联系人的员工。尽管如此,最好的做法可能是构建第三个表来管理这些信息。

尽管如此,如果性能是一个问题,我的意思是,如果您的网站中有数百万条记录和数十个同时访问,那么您的数据库可能会在更少的表中运行得更快,而不是那么规范化。但这种情况对于大多数企业和用户来说是不太可能的。相反,这种情况在大规模和遗留系统中是一种常见的做法。

祝你好运。


推荐阅读