人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

よろしくお願いします。

●質問者: tyn_Market
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● sibazyun
●40ポイント

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

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


sibazyunさんのコメント
もちろんシステム的には単なる連番でよいのですが、 ある程度は人間の検索ニーズ、「何年の何月ごろ」に 親和性をもたせるためです。

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

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

2 ● oil999
●40ポイント ベストアンサー

DB設計によりけりです。

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

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


tyn_Marketさんのコメント
「記事テーブルが他のテーブルとリレーションするのであれば主キーは必須」という点について質問なのですが、他のテーブルが記事テーブルの主キーを参照するからでしょうか。この場合、主キーでなくても一意であれば問題ないと考えるのは間違いでしょうか。もしよろしければ教えて頂けないでしょうか。よろしくお願いします。

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

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

3 ● きゃづみぃ
●20ポイント

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

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

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

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ