mysql - 数据建模 - 电话号码的单独表格?多对多关系?

标签 mysql database database-design relational-database database-schema

我是建模和创建这些关系数据库的新手,所以在阅读我正在尝试做的事情之后,任何推荐的阅读都会很棒。

我正在为联系人创建一个表。目前有这些表: 供应商, 主要联系人

主要联系人中的列如下所示:

table contacts: id, name, vendor, phone

现在有时,一个联系人有多个电话(手机、办公室、家庭、Skype 等),所以我想制作另一个表“电话”,其中包含以下列:ID、姓名和电话。 此外,某些联系人可能共享相同的电话号码。

这将是一个多对多的关系,对吗?许多联系人共享电话号码,这些号码都为相同的供应商或不同的供应商工作。 W

这样做(单独的电话号码表)而不是在联系人中包含 Ph1、Ph2、Ph3 列会更好吗?如果有更多的数字怎么办?如果只有一个电话号码怎么办?这会浪费空间。我应该在 phones 表中只包含 ID 和 phone_number,还是同时包含 ID、Phone_Number 和 Phone_Name?

最佳答案

这取决于您的项目,但是当它是私有(private)信息时,多对多的想法没有意义。想一想当有人编辑电话号码时会发生什么。现在所有使用该用户的其他用户都已更改信息,即使他们不想也不知道。

尝试这样的事情:

table phones: id, contact_id, phone
table contacts id, user_id, firstname, lastname etc.

关于mysql - 数据建模 - 电话号码的单独表格?多对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9118009/

相关文章:

mysql - 将 SQL 结果格式化为数组;按键访问?

ios - 如何相互访问我自己的 2 个 iOS 应用程序数据库

java - 使用从 MySQL 数据库读取列名的方法返回的数组已满 "null"

mysql - SQL,为什么显式查找数据比 SELECT * 更快

mysql - 加速复杂的多连接 MySQL 查询(如果重要的话可以通过 CakePHP 创建)

mysql - 有没有办法将列定义为 "updatable via trigger only"以强制完整性?

Java:用于异步数据库写入的TaskExecutor?

mysql - 如何在数据库中存储时间/值数据向量

database - 规范化的类设计是否会导致规范化的数据库设计

php - CodeIgniter db->select() 奇怪的行为