テーブル設計について質問です。


日々更新されるニュース記事をデータベースに保存する場合、主キーをどう設定すべきか悩んでいます。

データベースのカラムは、ジャンル・タイトル・ニュースの内容・取得年月日です。
「○○コード」のような分かりやすい主キー候補がない場合、適当に連番を振るべきでしょうか、それとも主キーは設定する必要がないでしょうか?

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/02/02 14:50:22
  • 終了:2012/02/08 08:42:39

ベストアンサー

id:oil999 No.2

oil999回答回数1728ベストアンサー獲得回数3202012/02/02 16:11:59

ポイント40pt

DB設計によりけりです。

記事テーブルが他のテーブルとリレーションするのであれば主キーは必須で、ご質問の場合は連番にするのが良いでしょう。記事をWebからダウンロードしているなら、記事URLを主キーにするという考え方もあります。

記事テーブルが他テーブルとリレーションしないなら、とくに主キーを設定する必要はありません。

他1件のコメントを見る
id:oil999

>テーブルが記事テーブルの主キーを参照するからでしょうか
その通りです。

>この場合、主キーでなくても一意であれば問題ないと考えるのは間違いでしょうか
原則論で考えると間違いです。
たしかに主キーでなくても一意であればリレーションを張れるのですが
1)一般的に主キーにしないとレスポンスが低下する
2)主キーにしないと重複登録される可能性がある
という理由から、主キーを使うのが原則です。

2012/02/02 20:39:10
id:tyn-Market

インデックス + 一意制約 ⇒ 主キーである、と理解しました。ありがとうございます。

2012/02/02 21:02:51

その他の回答(2件)

id:sibazyun No.1

sibazyun回答回数1752ベストアンサー獲得回数2362012/02/02 15:16:44

ポイント40pt

主キーは、データベース全体で一意に定まるもので、
「ジャンル」とか「・・コード」のような種類対応ではありません。
その意味で、「取得年月日」+「連番」とすべきでしょう。

なお、「取得」というところがミソで、ひとたび「ニュースの
発生年月日」などとすると、一連の事件の始まりと終わりを
どうするなどと悩むこととなります。

他1件のコメントを見る
id:tyn-Market

「一意」という点であれば連番のみでも満たすと思うのですが、取得年月日と合わせて主キーとするのは何故なのでしょうか。もしよろしければ教えて頂けないでしょうか。よろしくお願いします。

2012/02/02 20:22:14
id:tyn-Market

主キーにはインデックスが作成されるため、年月日で検索した時の性能が向上すると理解しました。回答ありがとうございます。

2012/02/02 20:25:43
id:oil999 No.2

oil999回答回数1728ベストアンサー獲得回数3202012/02/02 16:11:59ここでベストアンサー

ポイント40pt

DB設計によりけりです。

記事テーブルが他のテーブルとリレーションするのであれば主キーは必須で、ご質問の場合は連番にするのが良いでしょう。記事をWebからダウンロードしているなら、記事URLを主キーにするという考え方もあります。

記事テーブルが他テーブルとリレーションしないなら、とくに主キーを設定する必要はありません。

他1件のコメントを見る
id:oil999

>テーブルが記事テーブルの主キーを参照するからでしょうか
その通りです。

>この場合、主キーでなくても一意であれば問題ないと考えるのは間違いでしょうか
原則論で考えると間違いです。
たしかに主キーでなくても一意であればリレーションを張れるのですが
1)一般的に主キーにしないとレスポンスが低下する
2)主キーにしないと重複登録される可能性がある
という理由から、主キーを使うのが原則です。

2012/02/02 20:39:10
id:tyn-Market

インデックス + 一意制約 ⇒ 主キーである、と理解しました。ありがとうございます。

2012/02/02 21:02:51
id:taknt No.3

きゃづみぃ回答回数13539ベストアンサー獲得回数11982012/02/03 00:06:15

ポイント20pt

どういう条件で 抽出したいのかにより キーは 設定するべきですね。

抽出することがないので あれば キーは 不要ですが・・・。

ちなみに更新するにも キーは 必要となります。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません