0

これを検索する方法がわからないので、ここにあります。

これに関する私自身の用語は、「同期」および「逸脱」データベーススキーマです。これらすべてに正式な用語がある場合は、それを知りたいと思います。

これは少しばかげているように見えるかもしれませんが、私は行きたい方向に固執しています。データベーススキーマの作成は初めてです。私はJavaアプリケーションでSQLiteを使用しており、単一の.dbファイルを使用して、さまざまなテーブルにさまざまなカテゴリの情報を含めています。したがって、最初のテーブルにはaccountID / username/passwordが含まれています。次のテーブルはaccountID/firstname / lastname/emailかもしれません。新しい機能が実装されると、将来的にテーブルを追加する予定です。

ここで問題が発生しているのは、ユーザーが基本アカウントを作成したが、他に何も入力しなかった場合です。他のテーブルに対して空白行を作成する必要がありますか?または、行を追加して、それらのテーブルのデータを入力するときに行を作成する必要がありますか(数か月後になる可能性があります)?これが理にかなっていることを願っています。

長所/短所は何ですか?実装/プログラミング?効率?等

ありがとう

4

1 に答える 1

2

IMO、すべての単一値のユーザー属性は単一のテーブルに存在する必要があります。つまり、usersテーブルには次の列が含まれます。

  • アカウントID
  • userName
  • パスワード
  • ファーストネーム
  • 苗字
  • Eメール

ユーザーをオンボーディングするときに、各属性を必須またはオプションとして指定できます。オプションの属性は、データベース内のNULL可能列になります。ユーザーがこれらの属性に値を指定するときは、テーブルでそれらを更新するだけです。

今後、新機能を追加する際に、ユーザーの単一値属性に遭遇した場合は、usersテーブルを変更し、デフォルト値をnullとしてその列を追加する必要があります。

ユーザーに新しい属性を追加する頻度が高すぎる場合は、各行にユーザーの1つの追加属性が格納される属性テーブルモデルに移行できます。usersテーブルとこのuser_attrsテーブルの間には1対多の関係があります。HTH。

于 2012-12-01T08:04:57.200 に答える