I see what you are saying and about it being 3 table. One for name -> ip, another for ip -> name, and lastly one for xname_total -> all x's names.
Right now the table is set up with the user name as the item name and all the IP's that the item/user has been seen on as it's data. Though user names get purged/banned by admins for abuse. Thus, that item/user name won't ever be seen again. So my question is, should I be tracking by the user name or ip as the item name?
I'm thinking I might need to insert a $ctime as data1 so if the item/name hasn't been seen in say 6-12 months, purge it from the tables. Tables include: name -> ip, name -> BIO, name -> last seen, name -> last said, name -> on_chan_join_ctime (not saved to file - if no user on-join-ctime user join ctime = my join ctime).
Actually I'm already using a $ctime with the seen table. So for each name in the main table, I can check the $ctime for the same item in the seen table. If the duration is over 3-4 months, I can purge the item from all tables. Likewise, I can do a reverse purge and if there is item data in the other tables and that item isn't int he main table, it can be purge from the child tables.