テーブルAのカラムに外部キー(テーブルBのレコードのID)を格納する仕組み (外部キー制約で)
・・・ ここまではできる。
テーブルAのカラムに外部キー(テーブルBのレコードのID)を「複数」格納する仕組み (同じく外部キー制約で)
・・・ これってできますか?
具体的には、
テーブルA:ユーザー情報
テーブルB:メッセージ情報。
Aに「既読」カラムを作る。
テーブルBの各メッセージ情報をそのユーザーが既読したか?開いたことのあるメッセージのIDを0個~最大いくつでも格納できる仕組みがやりたいです。
探検
データベースに詳しい人ちょっと来て
■ このスレッドは過去ログ倉庫に格納されています
1以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 18:19:52.9502以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 18:25:27.383ID:fYZLmfvV0 Aがユーザテーブル Bがメッセージのマスタなら
主キーがAのidとBのidの複合キーで既読カラム持つCテーブルを作ってどうぞ
主キーがAのidとBのidの複合キーで既読カラム持つCテーブルを作ってどうぞ
3以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 18:29:52.576ID:Ak7LMNki0 >>2
あぁー 別テーブル作る発想は無かったです。
そこまで大掛かりにやらないと駄目ですか。
「データベース 配列 格納」と検索すると、1カラムに何件あるか分からないデータを格納するのは望ましくない、という答えが多いようで。
CSVで連結してテキストにして1カラムに格納するという試作はできているのですが、
制約が付けられないので、テーブルBのレコードが消えたときの扱いとかが面倒で困っていました。
あぁー 別テーブル作る発想は無かったです。
そこまで大掛かりにやらないと駄目ですか。
「データベース 配列 格納」と検索すると、1カラムに何件あるか分からないデータを格納するのは望ましくない、という答えが多いようで。
CSVで連結してテキストにして1カラムに格納するという試作はできているのですが、
制約が付けられないので、テーブルBのレコードが消えたときの扱いとかが面倒で困っていました。
4以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 18:35:57.697ID:b47Z6Gvta なんで既読をAに管理させるんだ?
5以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 18:43:16.958ID:Ak7LMNki0 >>4
Bに格納する(読んだユーザーを覚えておく)設計も検討しましたが、手間としてはどちらも同じなのでは?
Bに格納する(読んだユーザーを覚えておく)設計も検討しましたが、手間としてはどちらも同じなのでは?
6以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 18:44:04.295ID:b47Z6Gvta7以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 18:44:38.298ID:fYZLmfvV08以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 18:45:18.338ID:jJuVRVrg0 Cテーブルを用意して
ユーザーとメッセージのidと既読フラグ持たせればおk
ユーザーとメッセージのidと既読フラグ持たせればおk
9以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 18:45:46.204ID:jJuVRVrg0 既読フラグもいらんな
Cテーブル自体が既読テーブル
Cテーブル自体が既読テーブル
10以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 18:47:28.551ID:z+D684VX0 自前でRDBMSもどきでも作ろうとしてそう
11以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 18:48:39.103ID:b47Z6Gvta ユーザーのデータ見るときに過去の既読メッセージ全部転送しないといけないのヤバいな
12以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 18:51:56.644ID:Ak7LMNki013以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 18:55:31.891ID:b47Z6Gvta >>12
せめてメッセージにユーザー覚えさせたほうがまだマシじゃね?
せめてメッセージにユーザー覚えさせたほうがまだマシじゃね?
14以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 18:57:56.066ID:Ak7LMNki0 >>13
全メッセージをいったんselect文で取得して、そのユーザーが未読のものだけを抽出する、というプログラムを書くと、
メッセージが大量にあった場合に無駄な通信が発生するのではないか?という考えです。
全メッセージをいったんselect文で取得して、そのユーザーが未読のものだけを抽出する、というプログラムを書くと、
メッセージが大量にあった場合に無駄な通信が発生するのではないか?という考えです。
15以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 19:00:50.517ID:b47Z6Gvta >>14
過去のメッセージを1件削除するだけで全ユーザーのデータを更新するのはいいのか?
過去のメッセージを1件削除するだけで全ユーザーのデータを更新するのはいいのか?
16以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 19:03:51.497ID:Ak7LMNki0 >>15
そう。まさにそこで悩んでいます。
そうなるとまさに「テーブルC」案がベストなのですかね。
複合キーというのをやったことないのですが、
ユーザーかメッセージのどちらかが削除されたら、Cのレコードも自動で消えるということですか?
そう。まさにそこで悩んでいます。
そうなるとまさに「テーブルC」案がベストなのですかね。
複合キーというのをやったことないのですが、
ユーザーかメッセージのどちらかが削除されたら、Cのレコードも自動で消えるということですか?
17以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 19:06:00.180ID:b47Z6Gvta18以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 19:08:50.892ID:jJuVRVrg02022/10/25(火) 19:11:32.872ID:J0F5ZLIc0
>>16
自動で消えるようにもできるけど全てに自身が持てるまでやらないほうがいい
自動で消えるようにもできるけど全てに自身が持てるまでやらないほうがいい
20以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 19:15:13.090ID:qu74EQMx0 データベース設計のはじめの一歩じゃん
俗に言う連想エンティティとかいうやつ
俗に言う連想エンティティとかいうやつ
21以下、5ちゃんねるからVIPがお送りします
2022/10/25(火) 19:18:33.842ID:Ak7LMNki0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【フジ】中居正広氏の代理人弁護士が第三者委員会報告に反論「性暴力の実態は確認できず」★6 [Ailuropoda melanoleuca★]
- 【フジ】中居正広氏の代理人弁護士が第三者委員会報告に反論「性暴力の実態は確認できず」★7 [Ailuropoda melanoleuca★]
- 【滋賀】量販店前ですれ違いざまに27歳妊婦を殴った疑い、42歳無職男を逮捕 胎児は無事 女性はとっさに腕で腹部をかばう [ぐれ★]
- 中居正広氏 守秘義務解除を提案していた! 約6時間のヒアリングにも誠実に対応 [ひかり★]
- 石破首相が「無策」批判に激怒 消費税減税めぐり指摘した野党議員に「あなた」呼ばわりで反論 [首都圏の虎★]
- 中居正広氏 守秘義務解除を提案していた! 約6時間のヒアリングにも誠実に対応 ★2 [ひかり★]
- ▶兎田ぺこらの中身とちゅーしたいよな
- 10年前の日本人、まだまだ元気いっぱいだった… [667744927]
- 【同時視聴】博衣こよりのえちえち551エアライド🧪🎪🌃★2
- ▶天音かなたとちゅーしたいよな
- 【速報】小児ガンなのに任天堂に見捨てられたガキ、昏睡状態に陥る [757440137]
- 【悲報】急に筋トレを始めるおっさん、「筋トレ中年おじさん」、社会問題にwwwwwwwwwwwwww [308389511]