Du könntest eine neue Tabelle (mit identischer Struktur) für jeden User anlegen und neue Einträge in beide Tabellen (die für die Gruppe oder die private) eintragen, dabei dem User per Formularoption die Wahl überlassen, wo die Telefonnummer eintragen werden soll. So kann er Kontakte anlegen, die entweder von den anderen Gruppenmitgliedern einsehbar sind (Firmenkontakte) oder die er nur privat sehen kann (seine Sexgespielinnen usw.). So brauchst Du auch die Struktur der vorhandenen Tabelle nicht zu ändern, weil es da egal ist, wer den Kontakt angelegt hat und weiterhin jede Telefonnummer nur einmal vorkommen kann.
Bei der Darstellung würde ich das dann so machen: Bei der Eingabe hat der Benutzer wie gesagt die gleiche Maske wie bisher, mit der Zusatzoption, wo er den neuen Kontakt eintragen will; zwei Radiobuttons wären sinnvoll, also eine boolean-Auswahl "Gruppenliste"/"private Liste". Und beim Eintragen natürlich abfragen, ob die Telefonnummer schon in der eigenen privaten oder in der Gruppenliste vorhanden ist. Ist sie in der Gruppenliste bereits drin, muß sie ja nicht in die private Liste. Wäre nicht schlimm, aber unschön, wenn Du die Ausgabe noch auf Duplikate checken mußt, ist einfach unnötig. In einer anderen privaten darf sie ruhig vorkommen, immerhin wollen ja evtl. mehrere Leute die gleiche Geliebte eintragen, und es wäre unschön, dann zu erfahren, daß die schon vergeben ist^^. Bei der Ausgabe einer Abfrage nach z.B. "Meier" werden alle Meiers gelistet, die in der Gruppenliste und der privaten Liste des Abfragers vorkommen, und dabei die aus der privaten besonders gekennzeichnet (gelb hinterlegt oder was weiß ich).
Und Du bräuchtest evtl. noch die Funktion für den User, Datensätze in seiner eigenen privaten Liste zu löschen und einen Datensatz aus der privaten in die Gruppenliste zu verschieben. Andersrum eher nicht, weil er dann ja Daten den anderen Gruppenmitgliedern entzieht und Du nicht feststellen kannst, welchen Datensatz er eingestellt hat. Es kann natürlich jetzt zu Fehleinträgen kommen, wenn jemand einen privaten Kontakt eintragen will und versehentlich die Gruppenliste gewählt hat. Aber da sowohl das Sicherheitsniveau ggü. den anderen Gruppenmitgliedern wohl nicht irre hoch sein muß und außerdem im Notfall ein Admin greifbar wäre (irgendein Vertrauenswürdiger wird ja wohl ermächtigt sein, Datensätze aus der Gruppentabelle zu löschen), tut es wohl eine einfache HTML-Abfrage "Daten werden in Gruppenliste eingetragen und sind für andere sichtbar, sind sie sicher? Fortfahren/Abbrechen", falls die Option ausgewählt wurde.
Code erspar ich mir mal, ist schon ein paar Jahre her, daß ich mit SQL rumgehampelt habe.
PS: Übrigens ist es nicht gut, das Schlüsselwort "name" auch als Bezeichung zu verwenden. Etwas längere, aussagefähige Variablennamen haben dem Codeverständnis nebenbei noch nie geschadet.