ユーザ毎に電話番号を登録します。
ユーザは複数の電話帳を登録できて、上記の登録済みの電話番号を電話帳に登録できます。
電話番号は、複数の電話帳に登録が可能です。

としたい時のテーブル設計で悩んでいます。

今のところは、電話帳テーブルのユニークなIDをtag的に電話番号に付与しようと思っています。
ただ、そうすると、tagカラムの文字列長が気になっちゃったり、CLOB使うか?とか思っちゃったり、悩みどころが多くて困っています。
もちろん電話帳から電話番号を絞りこんだりしたいです。

イメージ的には、スマホなどのアドレス帳で、1つの連絡先に複数のグループを指定できるというのが近い感じだと思います。

こういう多対多のようなデータ設計って、どうしてやるのが良いんでしょうか?
今回以外でも似たような状況があったんですが...その時は紐付けテーブル(電話帳と電話番号を結び付けるだけのテーブル)が用意されていました。