我有一个 PHP 应用程序,我需要存储黑名单数据。我的网站成员会将任何用户添加到他/她的黑名单中。所以他们不会看到该用户的文本。
每个用户的黑名单都是不同的。
一个用户的黑名单中可以有 1000-1500 个用户。
用户可以从他/她的列表中添加/删除任何人。
黑名单将有成员的ID和黑名单的人的ID。
我正在尝试为此设计数据库表。但我不能确定结构如何?
我有 7-8 个 MySQL 表,但没有一个是这样的。
方式一:
--member ID-----black listed people (BLOB)
-----------------------------------------
--1234----------(Some BLOB data)---------
--6789----------(Some BLOB data)---------
我可以序列化列入黑名单的人的 ID 并将它们保存在 BLOB 数据列中。当用户想要编辑他/她的列表时,我从表中获取 BLOB 数据,删除不需要的 ID 并使用新数据更新列。当用户拥有 1k-2k 个 ID 时,IT 操作似乎有点慢。
方式二:
--member ID----black listed ID--------
--------------------------------------
--1234---------113434545--------------
--1234---------444445454--------------
--1234---------676767676--------------
--6789---------534543545--------------
--6789---------353453454--------------
这样,当用户想要查看他/她的黑名单时,我会在“黑名单 ID”列中为他们提供所有用户。编辑时,我向表中添加/删除新行。此操作速度很快,但表在时间上可能很大。
方式3:
--member ID----113434545----444445454----676767676---534543545-----353453454
----------------------------------------------------------------------------
--1234--------yes------------yes------------yes------------no------no-------
--6789--------no-------------no-------------no-------------yes------yes------
是表示黑名单,否表示未列入黑名单。我为每个列入黑名单的人创建新列,并在用户添加或删除人员时更新该列。
方式四:
???
这些是我的想法。如果你能给我一个更好的,我真的很感激?谢谢你。