7

プロジェクトで作業中です。そのほとんどは学習目的のために、私は実際には複雑なプロジェクトを試して、基本を掴んだ後に言語を学ぶ最良の方法だと思っています。データベース設計は強力なポイントではありませんが、私はそれを読んで始めましたが、初期の段階ではまだ学習しています。ダイナミックフィールドを含むデータベース構造

私のアルファスキーマです。実際には、私が考えることができるすべてを書き留めて、何か問題が発生したかどうかを確認しようとしています。 http://diagrams.seaquail.net/Diagram.aspx?ID=10094#

私の懸念のいくつかを、私は上のフィードバックをしたいと思います:コアの

お知らせは、例えば地域などの属性、エリアはキッチン、ベッドルーム、庭、バスルーム、リビングルームです簡略化のために言うことができます。ホームページである可能性のある他の顧客については、about_us、スプラッシュ画面に連絡してください。それは2つの領域になる可能性があり、100になる可能性があり、制限する必要はありません。

私はデフォルトのために別々のテーブルを作成し、それぞれはバグにリンクしています。後で私はカスタムフィールドの問題に遭遇しました。もし誰かが、どのテーマにバグを当てはめるのかをマークしたいのであれば、おそらく100もの他のものがあります。そのため、コアセットの属性とカスタムフィールド人々に柔軟性を与える。

しかし、私がカスタムフィールドを取得したときに問題があることが分かったので、代わりに2つのテーブルを使用するように、カスタムフィールドごとにテーブルを作成することはできません。カスタムフィールドとcustom_field_values。アイデアは、デフォルトを含むすべてのフィールドは、このテーブルに格納されるだろうし、各ただ、これはこのなどダイナミックなフィールドを処理するための効率的な方法のように見えるんこの

custom_fields table 
id   project_id  name 
01   1     area(default) 
12   2     rooms(custom) 
13   4     website(custom) 

custom_field_values table 
id   area   project_id sort_number 
667   area1   1    1 
668   area2   1    2 
669   area3   1    3 
670   area4   1    4 
671   bedroom  2    1 
672   bathroom  2    2 
673   garden   2    3 
674   livingroom  2    4 
675   homepage  4    1 
676   about_us  4    2 
677   contact  4    3 
678   splash page 4    4 

のようなものを持っていることになる値のテーブルにリンクされます他の選択肢はありますか?

デフォルトはハードコードされているので、それらを使用するか、自分で置き換えることができます。あるいは、自分のプロジェクトにリンクされるデフォルトの名前を編集できる別のテーブルを作成することができます。フィードバックは歓迎されています。スキームに問題があると非常に明白なことがあれば、自由に批評をお願いします。

+0

うわEAV

  • StackOverflowの上。もし私があなただったら私はNoSqlの代替案を見ています。 –

    答えて

    16

    Entity-Attribute-Valueと呼ばれる古い反パターンを再作成しました。テーブル内のカスタムフィールドの考え方は、実際にはリレーショナルデータベースと論理的に互換性がありません。 relationには固定数のフィールドがあります。

    しかし、それは適切なリレーショナルではありませんが、私たちは時々それを行う必要があります。

    SQLのカスタムフィールドを模倣する方法はいくつかありますが、ほとんどが正規化の規則を破ります。いくつかの例については、以下を参照してください。

    +0

    ありがとうございますBill、あなたがクラス継承を組み込むために私のデザインをどのように変えているのかを説明した本やリソースをお勧めしますか?それはまだ何か、あるいはMySQLで実装する方法を理解していません。私がリンクしている投稿のうちの1つの優先オプションとして、初心者のためにこれを説明するオンラインリソースまたは本があれば、それを喜んで購入して、これまでのところ、良い説明や例を見つけるのに苦労していることを示唆しました。 – user1547410

    +0

    Martin Fowlerの[エンタープライズアプリケーションアーキテクチャーのパターン](http://www.martinfowler.com/books/eaa.html)は、クラス継承のベストブックであり、他にも知っておくべきパターンです。 –

    +0

    ありがとう、それは私の構造がNosqlデータベースに適しているほど、私はそれを見ているように見えるが、私は前にそれを使用していないが、より論理的な選択と思われる、誰も同意しない? – user1547410

    関連する問題