2016-06-20 5 views
0

私の練習用のデータベースを設計したいと思いますが、私は考えていません。だから私は、経験豊かな開発者からのアドバイスやアドバイスを受けたいと思っています。テーブルに入る正確なデータがわからないときに、データベースのテーブルを設計するにはどうすればいいですか?

"テーラーショップ"のデータベースを設計したいと思います。実際に、店では、当社の主力製品は、縫製シャツとスカートです。
したがって、属性や列が少ないスカートとシャツの2つのテーブルを作成します。
しかし、誰かが他のものを縫うようになると、私たちもそれを縫うだろうという問題があります。
私はそれが何であり、その属性は何であるのか分からなければ、どうすればそれらのテーブルを作ることができますか?

+1

[ドキュメントに従って](http://dev.mysql.com/doc/refman/5.7/en/json.html)、MySqlはJSONをデータ型としてサポートしています。 JSON列に格納されているすべての製品プロパティを持つ一般的な製品テーブルを持つことができます。別のオプションは、EAVのアンチパターンを使用しています。 –

+0

@ ZoharPeledは何を言いましたか? 'JSON'データ型か' EAV'を使います。これらの用語を検索すると適切な結果が得られます。あなたの質問は、長い議論を生み出して、人々が意見の分かれた答えを出すようにします(誰もが何か新しいものや良いものを考え出すことができると信じているので)、NoSQLを提案する人もいます。しかし、非常に中核的には、未知のデータを 'JSON'カラムに格納するか、あるいはいくつかのテーブルで構成されるエンティティ属性値モデルを作成することです。私が間違っていないなら、Magentoはそれを使用して、あなたのコードをスカウトして有用なアプローチをとることができます。 –

+0

DMLの読み込みとテーブルへの書き込み。 DDLはあなたが持っているテーブルを変更します。これはDBMSを直接使用する方法です。 (Reaanbの答えと同じです。)したがって、単純な設計が不十分であることを実証するまで、構造化データ型やEAVは必要ありません。さらに、あなたは常にそのデザインを持っていなければなりません。もしあなたがそれらの他のテクニックを使うなら、それをエンコードしてください。リレーショナルデータベースの概要を読んでください。 – philipxy

答えて

1

あなたの目標がまだわからない場合は、単純にしておく方が良いです。モデルとモデル化しないでください。あなたがまだ必要としない属性については心配しないでください。記録したい事実をモデル化する。例えば、プレースホルダーを使っていくつかの例文を書くことから始めましょう。

On <date> we sewed <number> of <product> for <customer> at a total charge of $<price> 
A <customer> has a <first name> and <last name> and a <telephone number> 

可能であれば、意味を失うことなく、文章を分けて別々の文章に分けてください。次に、各プレースホルダの列に各センテンスのテーブルを作成します。

<product>のようなものは、最初はvarcharまたはenumにすることができます。後でリファクタリングするのは簡単です。

+0

実際には、エンティティとその属性について心配しています。私のプログラムでは2つのオプション(シャツとスカート)しかない場合は、カスタムテーブルや従業員のテーブルのようにプロダクトテーブルを話すだけで同じことができ、大丈夫だから、顧客が来て別のものを縫うときに何ができますか?オプションには存在しません。 –

+0

商品テーブルがある場合は、新商品のために行を追加するだけで十分です。属性がすべての製品に適用されない場合、またはそれらをフィーチャー表(フィーチャー表など)に分けることができる場合、属性をヌル可能にすることができます。 number_of_sleeves(product_id、amount)適用する場合は、商品の行を記録するだけです。 – reaanb

関連する問題