1

我想创建一个小型发票应用程序。我的第一步是创建一个包含两个表的数据库,其中每个客户可以有多个地址和电话号码。

我认为在这里假设我正在处理一段one to many关系是安全的。但是我应该如何设计表格和字段,以便它们可以为每个用户存储多个地址和电话号码?多重我也意味着不确定,因为所以我不能只在我的表中有 x no 列。Off Hand,这就是我的想法:

Clients
- Id
- Notes

CONTACTS
- id
- client_id
- address
- phone number

现在我试图避免像这样的第三个连接表:

Clients_Contacts
- id
- client_id
- contact id

因为我仍然想要 and 之间的一对多而不是many to many关系。我思考这个问题的方式有问题吗?有人可以帮我设计这个数据库并向我展示查询多个地址的示例查询是什么样子的。contactsclients

4

3 回答 3

2

你为什么需要一个连接表?

我会

Client
- ID (PK, FK of Contact)
- Notes

Contact
- ID (PK)
- client_id
- address
- phone_number

然后只需将客户端的 ID 设置为联系信息中的 client_id 的值。

这样,多个联系人记录可以具有相同的 client_id。

于 2012-08-07T14:06:27.973 回答
1

您的第一个想法看起来很适合您的用例(一对多)。如果您想要不想要的多对多关系,则只需要第三个连接表。

从特定客户端获取所有地址的示例查询将是:

SELECT address FROM Contacts WHERE client_id = 1
于 2012-08-07T14:08:09.703 回答
1

You say you want to store multiple addresses and phone numbers per user (= client, I assume?). Your current model already supports this. Every client can have as many contacts as needed (each contact would have the client_id set to the client's id). Only if you want to assign a single contact (address/phone number) to multiple clients as well would you need the third table.

于 2012-08-07T14:09:10.020 回答