次のように、mysql データベースに users テーブルがあります。
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(255) | YES | | NULL | |
| password | varchar(255) | YES | | NULL | |
| recent | varchar(255) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
そして、ユーザーが見た最後の 20 個の ID を保存する必要があります。私の最初の本能は、文字列を使用してカンマ区切りのリストを保持することでしたが、それは正規化に違反しています。保存する必要があるのは、20 個の ID と、それらを見たのが特定のユーザーであったことだけです。
正規化を維持しながら、私が思いつくことができる最高のものは、次のようなものです。
users
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(255) | YES | | NULL | |
| password | varchar(255) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
users_pages
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| users_id | int(11) | YES | MUL | NULL | |
| pages_id | int(11) | YES | MUL | NULL | |
+-------------+--------------+------+-----+---------+----------------+
pages
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| page01 | int(11) | YES | | NULL | |
| page02 | int(11) | YES | | NULL | |
| page03 | int(11) | YES | | NULL | |
| page04 | int(11) | YES | | NULL | |
| page05 | int(11) | YES | | NULL | |
| page06 | int(11) | YES | | NULL | |
| page07 | int(11) | YES | | NULL | |
| page08 | int(11) | YES | | NULL | |
| page09 | int(11) | YES | | NULL | |
| page10 | int(11) | YES | | NULL | |
| page11 | int(11) | YES | | NULL | |
| page12 | int(11) | YES | | NULL | |
| page13 | int(11) | YES | | NULL | |
| page14 | int(11) | YES | | NULL | |
| page15 | int(11) | YES | | NULL | |
| page16 | int(11) | YES | | NULL | |
| page17 | int(11) | YES | | NULL | |
| page18 | int(11) | YES | | NULL | |
| page19 | int(11) | YES | | NULL | |
| page20 | int(11) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
しかし、列名に数字を入れるのは理想的ではありません。また、21 ページ ビューのテーブルを更新する方法がわかりません。21 番目のページ ビューを page20 列に配置して更新する必要があります。一方、page20 は page19 になり、page19 は page18 になり、page2 が page1 になり、古い page1 は忘れられます。
CASCADE と呼ばれるものが役立つかもしれないと頭に浮かびましたが、Google で検索しても、その意味や使用方法を明確に理解することはできません。
違いがある場合は、PHP を介して MySQL にアクセスしています。
誰かがこれを処理する方法についてより良いアイデアをくれれば、本当に感謝しています。