1

小さな請求書発行アプリケーションを作成したいと考えています。私の最初のステップは、各クライアントが複数の住所と電話番号を持つことができる 2 つのテーブルを持つデータベースを作成することです。

ここでは、私がone to many関係を扱っていると想定しても安全だと思います。しかし、ユーザーごとに複数のアドレスと電話番号を格納できるようにするには、テーブルとフィールドをどのように設計すればよいでしょうか? 複数とは、不確定であることも意味するため、テーブルに x 個の列を含めることはできません。オフハンド、ここに私が考えていたことがあります:

Clients
- Id
- Notes

CONTACTS
- id
- client_id
- address
- phone number

今、次のような 3 番目の結合テーブルを回避しようとしています。

Clients_Contacts
- id
- client_id
- contact id

many to manyの間の関係ではなく、1 対多の関係が必要なためです。私がこれについて考える方法に何か問題がありますか?誰かこのデータベースの設計を手伝ってくれませんか? また、複数のアドレスを照会するサンプル クエリがどのようになるかを教えてください。contactsclients

4

3 に答える 3

2

なぜ結合テーブルが必要なのですか?

してただろう

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

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

次に、クライアントの ID を連絡先情報内の client_id の値に設定します。

このようにして、複数の Contact レコードが同じ client_id を持つことができます。

于 2012-08-07T14:06:27.973 に答える
1

あなたは、ユーザーごとに複数の住所と電話番号を保存したいと言っています (= クライアント、だと思いますか?)。現在のモデルはすでにこれをサポートしています。すべてのクライアントは、必要な数の連絡先を持つことができます (各連絡先には client_id がクライアントの ID に設定されます)。単一の連絡先 (住所/電話番号) を複数のクライアントに割り当てたい場合にのみ、3 番目のテーブルが必要になります。

于 2012-08-07T14:09:10.020 に答える
1

最初のアイデアは、ユースケース (1 対多) に適しているように見えます。必要のない多対多の関係が必要な場合にのみ、3 番目の結合テーブルが必要になります。

特定のクライアントからすべてのアドレスを取得するサンプル クエリは次のようになります。

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