2012-02-20 19 views
2

ユーザーが自分のエンティティを作成できるようにしたいとします。 - 学生(名前、年齢、学校、写真など) - 動物(名前、種類、国など) - 車(ブランド、色、価格など) などアプリケーションのクラス構造とデータベース構造

ユーザーは、作成されたエンティティに従ってデータベースにレコードを追加することができます。

すべてのプロパティは文字列です。

私の質問は、どのようにこれらのエンティティのインスタンスをデータベースに保存するのが最適かということです。 作成されたエンティティごとに新しいテーブルを作成することは、間違いだと思います。 私は、作成されたすべてのエンティティのプロパティをテーブルに保存し、次にこのエンティティのインスタンスを別のテーブルに保存することを考えていましたが、プロパティはカンマで区切ります。

エンティティ(学生用)構造テーブル:

property_name entity_key 

name    student 
age    student 
school   student 
photo   student 

エンティティインスタンステーブル:

instance    entity_key 

joe,19,nyhigh,joe.jpg student 

何私は、これらのレコードのインスタンスを作成し、誰とクラスについて? (自動生成されたクラス?)(「joe、12、nyhigh、joe.jpg」という文字列を分離するListプロパティを持つクラス) 誰もこの種の問題を以前に経験したことがありますか?

私はasp.net C#でアプリケーションを開発します。

+0

データベースに保存されているデータはどうしたらよいでしょうか?一般的にカンマ区切りの値をデータベースに保存しないでください – Randy

+0

まずこれは宿題ですか?また、文字列を保存するすべてのプロパティはありますか? –

+0

いいえ、それは宿題がありません:)はい、その文字列 – hhh3112

答えて

1

エンティティをシリアル化し、インスタンスの列に保存します。値に対してDBクエリを行う必要がある場合は、XMLシリアル化を使用します。

public static string SerializeToString(object obj) 
{ 
    using (var serializer = new XmlSerializer(obj.GetType())) 
    using (var writer = new StringWriter()) 
    { 
     serializer.Serialize(writer, obj); 
     return writer.ToString(); 
    } 
} 
0

エンティティタイプテーブルとエンティティプロパティテーブルを作成し、それらの2つを関連付けることができます。すべてのプロパティが文字列の場合そうでない場合は、エンティティプロパティテーブルに型を格納することもできます。

0

あなたは名前と値のペアのテーブルを作成する必要がありますし、それが学生のテーブル

学生

ID int型
姓のデータ型はnvarchar(50)
姓のデータ型はnvarchar(50)

を指しています

NameValue

ID int PK
名前nvarchar(50)
StudentID int型FK
値のデータ型はnvarchar(50)

あなたはそれのうちのすべてをピボットする必要がありますように、データベースが本当の面倒になってしまうキシにあります。しかし、それぞれのオブジェクトが本当にユニークであれば、ピボットは役に立ちません。