アプローチを汎用データベースのデザイン
-
19-09-2019 - |
質問
他のアプリケーションに対する私の面で、お客様は以下のようなものです:
- できるユーザーインタフェース用部入。
- 材料に、追加の"properties"があります。
- 物件で任意の値の型:小数,int,dateTime、varchar(長さ変化から5文字を大きなチャンクのテキスト)
基本的には、スキーマは以下のようなものです:
材料
MaterialID int nullでない場合にはPK
MaterialName varchar(100)nullでない場合
特性
PropertyID
PropertyName varchar(100)
MaterialsProperties
MaterialID
PropertyID
PropertyValue varchar(3000)
必須機能によりアプリケーションの検索機能:エンドユーザを検索できる材料を入力する質問など:
- [プロパティ]をinspectionDate>[DateTimeValue]
- [プロパティ]をserialNr=35465488
私はこれについての理解を深めましのMaterialsPropertiesテーブルは、約2万人を記録します。
データベースの初めに作られたものを下のSQL Server2000年以降に移行したSQL Server2005年
どのような方法で実現できるのですか?
解決
- ユーザーが入力でき独自のプロパティ名ですね、それから毎クエリでは、スキャンの特性表(例だのpropertyid【inspectionDate]).場の特性テーブルが大きく、参加も長い時間がかかる。きみの最適化によるdenormalizingおよび保管名propertyID.その一環として行われたdenaormalizedのMaterialsPropertiesます。
- きみの追加物件タイプ(int、charなど)のmaterialspropertyテーブルとパーティションのテーブルのタイプです。
- 席オブジェクトリレーショナルマッピング/エンティティの属性値モデル技術のクエリを最適化する
- 以降、既に多くのデータ(2百万円を記録)いくつかのデータマイニングとしての参照がある場合は繰り返し集団の特性のための多くの素材です。きしみの一つスキーマにしていEAVます。はこちらを参照してください: http://portal.acm.org/citation.cfm?id=509015&dl=GUIDE&coll=GUIDE&CFID=49465839&CFTOKEN=33971901
他のヒント
すことを検討してはどうかと思うの分離おMaterialsPropertiesテーブル式など入 IntMaterialProperties
, CharMaterialProperties
, など。このよう:
- 仕切ります。
- よる高速化を見てアップのための整数(またはその他の数値型を見ます。
- 潜在的に低減に保管ます。
このままご紹介 Type
カラムを Properties
, きに使用する MaterialProperties
テーブルを返します。のカラムが使用することもに検証するユーザの入力が正しいタイプの排除の必要性を照会するらかにすることを目指して悪い"入力します。
所属していません StackOverflow