1

昨年 、オーストラリアの政治とツイッター専用のサイトhttp://tweetMp.org.auを立ち上げました。

昨年末、一部の政治家が引退し、新しい政治家が登場したため、政治家のスキーマを調整する必要がありました。

データベースを変更するには手動 (SQL) の変更が必要だったため、管理者が将来これらの変更を行えるように CMS を実装することを検討していました。

また、独自の政治家データを管理するオーストラリア向けの政府/政治サイトが他にも多数あります。

これを集中的に行う方法を考え出してみたいと思います。

しばらく考えてみると、おそらく最善のアプローチは、政治家データの現在のビューと政治システムとの関係をモデル化するのではなく、トランザクションをモデル化することです。現在のビューは、過去に発生したすべてのトランザクション/変更の予測です。

このアプローチを使用すると、他のサイトは変更を「サブスクライブ」して (いわゆる pubsubhub)、変更を送信し、これらの変更項目をスキーマに統合することができます。

このアプローチがなければ、ほとんどのサイトはデータベース全体を破棄して再作成する必要があるため、関連するレコードを再関連付けする必要があります。このような方法でデータを管理するのは非常に煩わしく、公共の利益のためにこのデータをマッシュアップすることは非常に妨げられます。

ソースバージョン管理、銀行記録、スタックオーバーフローポイントシステム、その他多くの例で、いくつかのことがこのように機能することに気付きました。

もちろん、このアプローチの差し迫った課題と設計上の問題には、次のようなものがあります。

  • 現在のビューはキャッシュされ、再保存されていますか? どのくらいの頻度で更新されますか?
  • 決して変わらない基本エンティティーが存在する必要があるのはどれですか?
  • おそらく今は考えられないほどたくさんあります...

この主題に関して、誰もが推薦できる注目すべき文献はありますか? また、このようなデータ モデリングに役立つパターンやプラクティスはありますか?

どんな助けでも大歓迎です。

-履歴書

4

1 に答える 1

2

これは、データ モデリングではかなり一般的な問題です。基本的には次のようになります。

の景色、ある時点の景色、またはその両方に興味がありますか?

たとえば、サブスクリプションをモデル化するサービスがある場合は、次のことを知っておく必要があります。

  • ある時点で誰かが持っていたサービス:これは、請求額を計算したり、アカウントの履歴を確認したりするために必要です。と
  • ユーザーが現在利用しているサービス:ウェブサイトで何にアクセスできるか?

この種の問題の出発点は、次のような履歴テーブルを用意することです。

  • サービス履歴: id、userid、serviceid、start_date、end_date

ユーザーのサービス履歴を連鎖させると、その履歴が得られます。では、彼らが現在持っているものをどのようにモデル化しますか? 最も簡単な (そして最も非正規化されたビュー) は、最後のレコード、または終了日が NULL のレコード、または現在または将来の終了日を持つレコードが現在のものであると言うことです。

ご想像のとおり、これは厄介な SQL につながる可能性があるため、これは選択的に非正規化されるため、Services テーブルと履歴用の別のテーブルがあります。サービスが変更されるたびに、履歴レコードが作成または更新されます。この種のアプローチにより、履歴テーブルは監査テーブルのようになります(別の用語でよく使われます)。

これはあなたの問題に似ています。次のことを知っておく必要があります。

  • 下院の各議席の現在の国会議員は誰ですか;
  • 各議席の現在の上院議員は誰ですか。
  • 各部門の現在の大臣は誰ですか;
  • 首相は誰ですか。

しかし、ある時点でそれらのそれぞれが誰であったかを知る必要があるため、それらすべての履歴が必要です。

2003 年 8 月 20 日、Peter Costello は次のようなプレス リリースを行いました。

  • ヒギンズのメンバー。
  • 会計係; と
  • 副首相。

おそらく誰かが、ピーター・コステロまたは会計担当者によるすべてのプレス リリースを見つけることに興味を持っている可能性があるためです。これは同じプレス リリースにつながりますが、履歴がなければ追跡することは不可能です。

さらに、どの座席がどの州にあるのか、場合によっては地理的な境界などを知る必要がある場合もあります。

スキーマはそれを処理できるはずなので、スキーマの変更は必要ありません。

于 2010-01-16T03:49:50.813 に答える