mysql - 一张或两张表 : that is the quest*on

标签 mysql database

我正在尝试为一家充当中间人的公司设置一个数据库架构(将从供应商收集的元素出售给买家)。

这两个实体(供应商和买家)都可以概括为客户 - 它们都具有非常相似的属性(名称、电子邮件、密码、地址等...)和多个其他实体取决于这个。例如,为买家生成发票,为供应商生成结算(不同类型的文书工作)。问题是一个人(客户)可以同时成为买家和卖家。

我遇到的困境是如何为此设置数据库结构?

目前,我更倾向于将供应商和买家放在一张表中,并使用诸如角色列之类的内容来区分他们。通过这种方法,我可以避免数据冗余,并且仍然可以创建 View 以轻松地将供应商与买家与外界分开。

我的想法正确吗?您通常会如何解决这种情况?使用两个单独的表会更好吗?

感谢您的建议和经验:)

最佳答案

如果您了解用例,请考虑一下什么是粗略的解决方案。但这是相当危险的,最终有时巧妙的数据模型变得太复杂而难以理解和维护。

现在决定您的数据模型或组织是否适合以后的更改有多重要?你能敏捷吗?然后实现,什么是最适合您当前用例的,仅此而已!

顺便说一句。 如果人员和角色之间存在 1 对 2 的关系,您应该分解角色,而不是重复数据,或者创建两个属性 isBuyer 和 isVendor,或者在这些属性中放入对买方和供应商特定数据的引用,如果有的话。

关于mysql - 一张或两张表 : that is the quest*on,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45126767/

相关文章:

mysql - 使用 JOIN 查询时出现问题

php - 使用 LIKE 和 order by 获取数据库数据

mysql - 在MySQL数据库中添加约束保证唯一性

python - 使用 pandas 读取文件并创建 header

database - Tokyo Cabinet 的最大尺寸是多少?

php - MySQL 查询 - WHERE 和 IF?

mysql - DB中一个null值会占用多少内存?

conflict - Conflict Serializable 和 Serializable 之间有什么区别?

php - mySQL 查询,分组依据然后按最近分组的顺序排序?

mysql - 具有复杂条件的 SQL 更新