ユーザーはオブジェクトに独自のフィールドを定義し、これらのフィールドに許容値を定義できる必要があります(コンパイルなし)。EAVを使用せずにどのように解決しますか?EAVの代わりにユーザー定義フィールド?
例:すべてのオブジェクトに123ステータス番号(1.aまたは2.bまたは3.cを許可)への参照が1つ以上必要です。
ユーザーはオブジェクトに独自のフィールドを定義し、これらのフィールドに許容値を定義できる必要があります(コンパイルなし)。EAVを使用せずにどのように解決しますか?EAVの代わりにユーザー定義フィールド?
例:すべてのオブジェクトに123ステータス番号(1.aまたは2.bまたは3.cを許可)への参照が1つ以上必要です。
リレーショナルデータベースは、あらかじめ定義された安定したスキーマの存在に本当に依存しています。 おそらくdocument-oriented databasesを見てください。一般的に、属性、ドキュメント、およびオンザフライの自由な定義が可能です。
スキーマの検証に関しては、スキーマ自体をユーザーが変更できる場合は、おそらくアプリケーションで行う必要があります。
リレーショナルDBを使用する必要がある場合は、(不器用な)回避策があります。私はEAV(できるかどうか)やThiloの提案もお勧めします。これを行うリレーショナルな方法があります。
ご容赦ください。私たちは、 上の列数 各データ型のために作成することができ、ユーザにバインドされた最大を想定している
_
create table main_tbl(
numColumn1 number(10),
numColumn2 number(10),
numColumn3 number(10),
numColumn4 number(10),
numColumn5 number(10),
charColumn1 varchar2(100),
charColumn2 varchar2(100),
charColumn3 varchar2(100),
charColumn4 varchar2(100),
charColumn5 varchar2(100),
dateColumn1 date,
dateColumn2 date,
dateColumn3 date,
dateColumn4 date,
dateColumn5 date
)
create table main_tblmeaning(
user_id varchar(25) foreign key references users_tbl (user_id),
numColumn1_name varchar2(50),
numColumn2_name varchar2(50),
numColumn3_name varchar2(50),
numColumn4_name varchar2(50),
numColumn5_name varchar2(50),
numColumn6_name varchar2(50),
charColumn1_name varchar2(50),
charColumn2_name varchar2(50),
charColumn3_name varchar2(50),
charColumn4_name varchar2(50),
charColumn5_name varchar2(50),
dateColumn1_name varchar2(50),
dateColumn2_name varchar2(50),
dateColumn3_name varchar2(50),
dateColumn4_name varchar2(50),
dateColumn5_name varchar2(50)
)
create table users_tbl(
user_id varchar2(25) primary key,
user_name varchar2(50)
)
ユーザーはあなたが彼に自由な数の列(numColumn1 - 5)を割り当てる番号欄たいたびmain_tblでは。 main_tbl_meaningsに列(numcolumn1-5)をユーザーが提供するユーザーが読める名前にマップするエントリ(行)を追加します。