スクレイピングによって取得したデータを RDB に保存するときはあんまり正規化しないほうが良い
という気がしている
(すごくざっくりした話として)スクレイピングによって取得するデータは、アプリケーション側で正規化されたテーブルが何個かあって、それらを JOIN したレコードまたはレコード達が返ってきていることが主
で、ある程度規模が大きくなると取得してきたデータは RDBMS に入れたくなるのが普通だと思う
たとえば、掲示板サイトからこういう JSON をスクレイピングで取得したとする
code:json
{
"message": "こんにちは",
"id": 123,
"timestamp": "2025-01-01T12:34:56.789Z",
"user": {
"id": 456,
"username": "ikr7",
"avatar_url": "https://example.com/ikr7.png"
}
}
で、これを RDBMS に入れようと思うと普通は message と user テーブルを作って、message テーブルに user_id みたいなカラムを持たせるということになると思う
(ここまで書いていて、なんで正規化しないことにメリットがあるのかわかんなくなってきたので、またその気持ちになったときに追記する)
正規化がどうという話題からは少し逸れるが、Foreign Key 制約は絶対に入れてはいけない
スクレイピングによって取得されたデータを信用してはいけないから…