web - 创建具有相同列或一个主表的数据库表
问题描述
我正在建立一个带有大型数据库的网站,有 6 种类型的数据,所以 6 种形式将数据传递到数据库。每个表单都有唯一的参数,6 个表单中有 4 个具有相同的字段,并且字段可以包含多个数据:电子邮件、地址和电话可以在 4 个表单上是多个。
首先,我想创建 4 个不同的表,例如:store_contacts、warehouse_contacts、delivery_contacts 等,以保持不同类型的分离。所以我会有 4 个包含相同字段的类似表:
id、电话、电子邮件、地址、store_id/delivery_id/等
我已经阅读了创建包含它们的表格的更好做法,表格联系人:
id、类型、type_id、电话、电子邮件、地址
从类似的问题:
- 两个具有相同列的表或一个具有附加列的表?
- https://softwareengineering.stackexchange.com/questions/302573/one-wide-table-or-multiple-themed-tables
- https://dba.stackexchange.com/questions/46852/multiple-similar-tables-vs-one-master-table
但我不确定表格是否会在以后更改,是否会添加新字段以仅用于存储或仅用于交付。除了联系人之外,我在其他领域也有类似的情况。
每次我需要提取特定类型的数据或需要删除它们时,使用类型进行查询会不会很舒服?插入很多行会不会很乱?如果将为“存储”创建一个新字段,其他人在该字段上包含 NULL 是否可以?
解决方案
可能您应该阅读一些有关关系实体或面向对象 - 继承的信息,具体取决于您正在使用的范例。
例如,您可以在这样的文章中了解它
通常,出于多种原因,您应该将联系人存储在单独的专有实体中。部门特定的字段可以存储在每个表中,前提是您确定它们在其他实体中没有用处。例如:warehouse_contacts 将有一个虚构的员工 id 字段来表示仓库中负责参加给定联系人的员工。尽管如此,最好的做法可能是构建第三个表来管理这些信息。
尽管如此,如果性能是一个问题,我的意思是,如果您的网站中有数百万条记录和数十个同时访问,那么您的数据库可能会在更少的表中运行得更快,而不是那么规范化。但这种情况对于大多数企业和用户来说是不太可能的。相反,这种情况在大规模和遗留系统中是一种常见的做法。
祝你好运。
推荐阅读
- c++ - 映射二维数组以进行寻路的最佳方法?
- python - 使用 % 运算符在 python 中打印浮点数
- php - 在 Wordpress 网站上引用 MYSQL 数据库中的数据
- amazon-web-services - 从 Github 获取 AWS CodeDeploy 到 Auto Scale Group 的最新提交
- javascript - 过渡属性的跳跃行为
- java - 条形图左右移动
- linux - 构建内核模块时如何链接静态库?
- laravel - 添加修订后自动更改状态
- python-3.x - 我想从文本输入中提取第三行
- java - 尝试构建 gradle 时出错 - androidx.appcompat:appcompat:28.+