前提・実現したいこと
C#(WPF)とMySQLでWindowsで動作するソフトウェアを実装しています。
ユーザの保持する値に応じてページ内で読み込むコンテンツを切り替えたいと考えています。
コンテンツの要素はMySQLから取得します。
また、コンテンツは随時追加されます。しかし、ソフトウェアはアップデートせずにデータベースの更新だけでコンテンツが追加できる必要があります。
コンテンツにはいくつかの種類があります。
種類毎にコンテンツを構成する要素(例えば、テキスト、画像、表示順、表示期限など)は、バラバラであり、一つのコンテンツテーブルを作成し、
異なる種類のコンテンツの要素を入れていくと、使う素材と使わない素材がバラバラとなる上、カラム数も多くなってしまいます。
また、今後コンテンツの醜類が増える可能性もあり、そのたびにコンテンツテーブルの構成を変更することになってしまいます。
そこでコンテンツの種類別にテーブルを持たせ、そのコンテンツに必要な要素カラムだけで構成しようと考えています。
下記に具体例を示しています。
①dtb_display_contentのidで読み込むコンテンツを決定します。
②該当するcontent_category_idからdtb_content_categoryテーブルを参照して、読み込むテーブル名を取得します。
③該当するテーブル名から、dtb_display_contentで合致したcontent_idの要素を読み込みます。
質問は、②のようにテーブル名をカラムの中に入れる設計というのにいままで触れたことがないのですが、特に実装上懸念される事項などはありませんでしょうか?
経験がなく、ぜひ皆様のご意見をお伺いできれば幸いです。
またその他お気づきの点があればそちらもご教示頂ければ幸いです。
よろしくお願い致します。
【dtb_display_content】
id(PK) | content_category_id(FK) | content_id(FK) |
---|---|---|
1 | 2 | 1 |
2 | 1 | 1 |
3 | 3 | 1 |
4 | 1 | 2 |
5 | 1 | 3 |
【dtb_content_category】
content_category_id(PK) | table_name |
---|---|
1 | dtb_content_A |
2 | dtb_content_B |
3 | dtb_content_C |
【dtb_content_A】
|content_id(PK)|name|img_source|text|display_index|などコンテンツAの要素をカラムに|
|:--|:--:|--:|
|1|AAA|Y:\hoge|
|2|BBB|Y:\hoge|
|3|CCC|Y:\hoge|
|4|DDD|Y:\hoge|
|5|EEE|Y:\hoge|
【dtb_content_B】
|content_id(PK)|name|img_source_1|img_source_2|img_source_3|などコンテンツBの要素をカラムに|
|:--|:--:|--:|
|1|AAA|Y:\hoge|
|2|BBB|Y:\hoge|
|3|CCC|Y:\hoge|
|4|DDD|Y:\hoge|
|5|EEE|Y:\hoge|
【dtb_content_C】
|content_id(PK)|name|text_1|text_2|text_3|などコンテンツCの要素をカラムに|
|:--|:--:|--:|
|1|AAA||
|2|BBB||
|3|CCC||
|4|DDD||
|5|EEE||
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/31 13:03