質問編集履歴

3

訂正文を追加

2019/05/05 09:04

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,6 @@
1
1
  DBの初学者です。Twitterのようなサービスではユーザ名とペアになるサロゲートキーは不要と考えてもよいでしょうか?
2
+
3
+ (訂正:本文でTwitterのユーザ名は「変更不可」と誤解しておりましたが、実際はユーザ名も変更可能でした。)
2
4
 
3
5
 
4
6
 

2

論点の説明を改善しました

2019/05/05 09:04

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,32 +1,22 @@
1
- DBの初学者です。Twitterサロゲートキーを使う理由でしょうか?
1
+ DBの初学者です。Twitterのようなービスではユーザ名とペアになるサロゲートキーは不要と考えてもよいでしょうか?
2
2
 
3
3
 
4
4
 
5
- ### 主題
5
+ ### 詳細
6
6
 
7
- Twitterのユーザ名は**「変更不可、長さ15文字まで。英数字(文字A~Z、数字0~9)とアンダースコアのみ利用可」**です。
7
+ Twitterのユーザ名は**「変更不可、長さ15文字まで。英数字(文字A~Z、数字0~9)とアンダースコアのみ利用可」**です。この条件ならユーザ名をナチュラルキーとして利用できるので、サロゲートキーは不要だと考えましたが、実際はどうなのでしょうか?
8
-
9
- この条件ならユーザ名をナチュラルキーとして利用できるので、サロゲートキーは不要だと思いますが、実際はどうなのでしょうか?
10
8
 
11
9
  (こちらの[資料](https://www.atmarkit.co.jp/news/201004/19/twitter.html)で、[つぶやきテーブルにユーザ名の代わりにサロゲートキーを利用](https://www.atmarkit.co.jp/news/201004/19/twitter02.png)しているようでした)
12
10
 
13
11
 
14
12
 
15
- ### 詳細
16
-
17
- **私がサロゲートキーは不要だと思った理由と、論点となると思われるポイント**
18
-
19
- Twitterのアカウント数上限をスパムアカウントなども考慮して100億程度とする。例えばmysqlではBIGINTを使う必要があり8バイト必要。一方user名はアスキー文字で最大15文字なので、VARCHAR(15)で最大16バイト?となるが、1文字のユーザ名は2バイト?である。
20
-
21
13
 
22
14
 
23
15
  **論点1**
24
16
 
25
- **8バイト** vs **2〜16バイト**なら両者のサイズ差は無視できるのではないか?
17
+ Twitterのアカウント数上限をスパムアカウントなども考慮して100億程度とする。例えばmysqlではBIGINTを使う必要があり8バイト必要。一方user名はアスキー文字で最大15文字なので、VARCHAR(15)で最大16バイト?となるが、1文字のユーザ名は2バイト?である。**8バイト** vs **2〜16バイト**なら両者のサイズ差は無視できるのではないか?
26
18
 
27
19
  (他テーブルのインデックスにも利用されるのでユーザ数が莫大なことを考えると実は無視できない?実際どうなのでしょうか?)
28
-
29
-
30
20
 
31
21
 
32
22
 
@@ -36,10 +26,8 @@
36
26
 
37
27
 
38
28
 
39
-
40
-
41
29
  **補足**
42
30
 
43
31
  Twitterがサロゲートキーを採用した理由はrailsを利用していたことや、将来のユーザ名変更にも対応できる柔軟性のためかもしれません。
44
32
 
45
- 本投稿では単純化のため、フレームワークの都合や将来のユーザ名の変更は無視できるものとして、Twitterのようなサービスにおいて、ユニークなユーザ名とペアになるサロゲートキーをつけた方が良いかどうか、ご意見をお聞かせ下さ
33
+ 本投稿では単純化のため、フレームワークの都合や将来のユーザ名の変更は無視できるものとして、これからTwitterのようなサービスを作る場合、ユニークなユーザ名とペアになるサロゲートキーをつけた方が良いかどうか?とう疑問です。

1

疑問を明確にしました

2019/05/05 08:50

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- ##### 皆さんご意見せて下さい!
1
+ DB初学者です。Twitterがサロゲートキー使う理由は何でしょう
2
2
 
3
3
 
4
4
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  Twitterのユーザ名は**「変更不可、長さ15文字まで。英数字(文字A~Z、数字0~9)とアンダースコアのみ利用可」**です。
8
8
 
9
- この条件ならユーザ名をナチュラルキーとして利用できるので、サロゲートキーは不要だと思いますが、皆さんはどう思いますか?
9
+ この条件ならユーザ名をナチュラルキーとして利用できるので、サロゲートキーは不要だと思いますが、実際はどうなのでしょうか?
10
10
 
11
11
  (こちらの[資料](https://www.atmarkit.co.jp/news/201004/19/twitter.html)で、[つぶやきテーブルにユーザ名の代わりにサロゲートキーを利用](https://www.atmarkit.co.jp/news/201004/19/twitter02.png)しているようでした)
12
12
 
@@ -42,4 +42,4 @@
42
42
 
43
43
  Twitterがサロゲートキーを採用した理由はrailsを利用していたことや、将来のユーザ名変更にも対応できる柔軟性のためかもしれません。
44
44
 
45
- 本投稿では単純化のため、フレームワークの都合や将来のユーザ名の変更は無視できるものとして、Twitterのようなサービスにおいて、ユニークなユーザ名とペアになるサロゲートキーをつけた方が良いかどうか、皆さんのご意見をお聞かせ下さい!
45
+ 本投稿では単純化のため、フレームワークの都合や将来のユーザ名の変更は無視できるものとして、Twitterのようなサービスにおいて、ユニークなユーザ名とペアになるサロゲートキーをつけた方が良いかどうか、ご意見をお聞かせ下さい!