2016-07-17 1 views
0

70-80フィールド、つまり70-80テーブルの列を含むアプリケーションフォームのデータベーステーブルを作成しようとしています。データベーステーブルを作成する最適な方法は、異なるユーザーに対して異なる列を持っています

この表は複数のクライアントを対象としていますが、80個のフィールドのうち、ほぼ30個のフィールドがすべてのユーザーで同じになり、残りはすべてのユーザーに変更されます。

注:すべてのクライアントには、そのアプリケーションフォームを記入する複数のユーザーがいます。

私は2つの方法でテーブルを作成します。

第一1:

第一表は[sno, firstname, lastname, ..]同じフィールドが含まれています - >すべてのユーザーに対して 第二のテーブルが4列[sno, field_name, value, users_id]

第二1が含まれています

第一表には、すべての列を持っていますユーザーに関係なく(つまり、すべてのクライアント列を1つのテーブルに追加することを意味します) 2番目のテーブルでは、私はuser_idを保持し、それぞれそれに関連する列。

これは最善の方法ですが、その他の方法がある場合はお知らせください。すべてのクライアントのための

共通フィールド: 個人情報、家族の詳細、教育内容など

すべてのクライアント

+2

これは恐ろしいデータベース設計です。それをしないでください。 –

+0

質問の最後にいくつかの詳細を追加しました@juergend –

+0

そのようなものではなく、2つのチームがあり、1チームはほとんど個人的な詳細しか必要としませんでした他のチームは他の詳細@RyanVincentしか必要としません。あなたが私のことを理解してくれることを願っています –

答えて

0

のこの種を処理するための最善の方法とは異なるだろう他のいくつかの詳細があります。デザインはEAVの概念を使用することです。

EAV:たとえば

users (id, create_date, status) 

attributes(id, title, status) // it will contains all attributes like firstname, lastname, etc etc) 

attribute_to_users (id, attribute_id, user_id, attribute_value) // it will contain attribute value with respect to attribute and user 

それは同じユーザ手段
attribute_to_users (1, 1, 1, Naveed) 
attribute_to_users (1, 2, 1, Ramzan) 

、attributeId:1(FIRSTNAME)値エンティティを使用すると、いくつかのテーブルを作成する必要がある値

属性Naveedであり、2番目のattributeIdは姓でRamzanです。

Same Drupalとmagentoがやっている。

+0

私が言及した第2の方法は同じです、悪い説明のために申し訳ありません。それを行うための他の良い方法はありますか? –

+0

これは最高です。 –

関連する問題