2009-04-03 8 views
0

最近、私は何かを「機能」させることができるサイトの管理者のために何かを追加するように要求されました。永続化する必要がある一回限りのデータで何をしますか?

このディスカッションでは、「特集記事」としましょう。

当然のことながら、私たちは既に 'articles'のデータベースモデルを持っています。それはそのままでは〜20列ありますので、私は実際には既にそれ以上の膨満感を感じません。

マイオプション:

  1. タック「特集」ブール値(またはint型)の、唯一の事は、任意の時点

  2. で紹介されますことを認識し、これを保持するための新しいモデルを作成します。ポップアップする可能性があるその他の機能クリープアイテムが含まれます。

  3. 私はあなたの提案を受け取ります! ;)

このインスタンスではどうしますか?私は今これを見つけ出し、何かにもう一つのコラムを付け加えなければならないのは嫌です。この情報は永続化する必要があります。

答えて

2

一度に1つの記事しか紹介できない場合は、bool列を追加するのは無駄です。レベルを上げて、FeaturedArticleIDの列を追加する必要があります。あなたはSite_Settingsテーブルを持っていますか?

+0

yeh ...私はこれを行うことについて考えていたのですが、私は将来このようなことがもっと起こると思っています。 – eyberg

0

属性表を持つような拡張可能なモデルを使用し、次にリンクテーブルを使用して記事と属性の間に多対多の関係を形成できます。このように、これらの種類の機能では、スキーマを変更する必要はありません。

3

基本的にキー値ストアである単純な2列のテーブルを追加するだけです。次に、(featured_article_id, 45)などの値を持つ新しい列を追加するか、最初の機能IDが何であれ新しい列を追加します。

編集:rmeadorのコメントで指摘されているように、これは物事が比較的シンプルな限り良い解決策に過ぎないことに注意してください。より複雑なデータを格納する必要がある場合は、より柔軟なソリューションを検討することを検討してください。

+0

この「機能」がより多くの機能を含むようになったらすぐに、完全なソリューションを作成するためにリファクタリングする必要があることを理解して、このアプローチをとっておきます。 +1 – rmeador

0

parameter_nameとparameter_valueの列を持つ一種のglobal_settingsテーブルがあります。ここに特集記事IDを入れてください。

このような間に合わせと-もののため
0

は、私が設定テーブルのいくつかの並べ替えを含めるのが好き:

CREATE TABLE Settings (
    SettingName NVARCHAR(250) NOT NULL, 
    SettingValue NVARCHAR(250) 
) 

あなたの代わりにグローバルなもので、設定をユーザーごとまたは顧客が必要な場合、あなたは可能性があり特定のユーザー/顧客にそれを識別させる列を追加します。次に、 "FeaturedArticle"の行を追加し、文字列からIDを解析するだけです。それは非常に最適化されていませんが、plaintextは非常に柔軟性があります。

関連する問題