ユーザーの使用端末のid等を取得しDBに保存することができるのか

ユーザーのアカウント登録不要の簡単なアンケートアプリを作っています。

初期画面ではアカウント登録ではなく、ユーザーに性別や年齢、出身地などだけ入力してもらうようにしたいです。

そこで入力してもらった性別などの情報を、ユーザーの使用端末に紐付けてDBで管理することは可能でしょうか?

ユーザーの端末のidなどが取得できれば可能かと思うのですが、そのやり方がわからないので、教えていただけると幸いです。

「アカウント登録不要にしたい」と書かれていますが、名前やメールアドレスを登録しないだけでSign Up画面はあるという理解でいいんでしょうか?

SignUp画面があるという前提であれば、ユーザーに性別、年齢、出身地を入力してもらうときに自動でuser IDを割り振ってユーザーを区別できるようにしてはいかがでしょうか?(Add Automatic Fieldでuser IDを自動発生させるということです)

この手の問題はNoCodeの質問で過去にもよく出ており、RAND関数を使ってランダムな数字をIDとして割り当てるというのが回答例として出ています。(乱数も非常に大きい数字を使って同じ数字が被らないようにします。RAND(1,9999999)とか)

(提案)
私的にはランダム関数だと理屈的には同じ数字が出てきてIDが被ってしまう可能性が0ではないのであまり使いたくないのでuserIDの一番大きい数字+1でIDを作ったらどうでしょうか?

最初単純に「count(user DBのレコードの個数)+1」でもいいんじゃないかと考えましたが、途中でデータベースが削除されたときに番号が被るのでダメだとわかりました。
(例:データが5個あって1,2,3,4,5の番号が割り振られているとします。4を削除するとレコードの個数は4個になりそれに1足すと5というIDができてしまい、5が2つ存在してしまう。)

(user IDの最大値+1のメリット)
このやり方は途中のレコードが削除されても数字がダブることはないです。上記の例のように4を削除した場合でも最大値の5は依然として5のままであり、次に発生するIDは5+1で6となり、ダブりません。
もし最大値5が削除された場合は残ったレコードの中で最大値は4になり、次に発生するIDは4+1で5になりますが、最初に存在した5はすでに削除されて無いので同じ数字が2つ存在することはありません。

上記は一つの例ですが、要は数字が被らないやり方でユニークな数字をIDとして発生させればいいんじゃないかと思います。

1 Like