Associateは入門レベルの試験で、この試験の合格が他の試験の受験資格にもなっています。
Reactiveとついている通り、Reactive Web App開発の基礎的な知識を問われる試験。
試験問題は、
https://www.outsystems.com/learn/certifications/
の、「Associate Reactive Developer (OutSystems 11)」項目のリンク「Exam Details」でダウンロードできる資料から。解凍したら、Japaneseフォルダにあるファイル「Associate Reactive Developer Sample Exam - JP.pdf」を開いてください。
Associate Reactive Developerのサンプル問題について解説 1/4(#1-#5)
Associate Reactive Developerのサンプル問題について解説 2/4(#6-#10)
Associate Reactive Developerのサンプル問題について解説 3/4(#11-#15)
Associate Reactive Developerのサンプル問題について解説 4/4(#16-#20)
#1 データリレーション(多対多)
一般的なRDBの設計の知識で回答できる内容。
Entity間でリレーションを持つには、参照をする側のEntityに、参照される側のEntity Identifier型の属性を追加します。
上記の方法では参照する側:される側で多:1の関係になります。
Entity同士に多対多の関係を持つには、中間Entityを作り、双方のEntityのIdentifier型の属性を持たせればいいです。
つまり、この場合は、中間EntityにOrder Identifier型の属性とProduct Identifier型の属性を持たせます。
この場合1つのOrder(注文)中に複数のProduct(製品)が含まれ、1つのProductは複数のOrderに登場するという関係が表せる。
よって、このことを説明しているA(Order Identifier 型および Product Identifier 型の2つのアトリビュートを含む3つ目のエンティティを作成する。)が正解。
#2 エンティティとデータ型(識別子)
エンティティに記載されています。
エンティティ識別子は主キーのこと。
OutSystemsでは主キーは1属性限定です。複合キーは持てない(別途UniqueなIndexを作成することは可能)。
各選択肢を見ていきます。
A:×。デフォルトではLong Integerですが、変更可能です。
B:×。同じくデフォルトでは自動採番(属性のIs AutoNumber=Yes)ですが、オフにできます。
C:○
D:×。型や名前を変更することができます。
というわけで正解はC。
#3 Aggregate(Group By)
問題の図を見ると
- ShippingState:Group Of ...という記述があるので、これはGroup Byが効いている
- Count:Count of ...という記述があるので、この属性には、Group Byでまとめられたレコード数を返る
よって、Group Byがされているため、Aggregate返る属性は集計に使った2属性のみ。
選択肢A(2つの集約されたアトリビュート(ShippingStateおよびCount)。)が該当します。
なお、AggregateにGroup Byを適用する手順は、グループ化されたデータから値を計算するにあります。
#4 Aggregate (JOIN)
図を見ると、
- OrderとEmployeeが「With or Without」で
- OrderとPriority/OrderStatusが「Only With」で
結合されています。
With or Without:結合の左側のEntityの全レコードを取得し、結合できるときだけ、右側のEntityをくっつけて返す(左外部結合)
Only With:左側のEntityのレコードと右側のEntityのレコードで結合できたレコードだけを返す(内部結合)
よって条件を読み替えると
- Employeeがあるかどうかに関わらず(0レコード以上と読み替えられる)
- Priorityがあり
- OrderStatusがある
Orderレコードを返すことになります。
これに合致するのは選択肢D(Priorityがあり、Employeeが0人以上のOrderを返す。)ですね。
一応各選択肢を見ると
A:EmployeeがあるOrderのみを返す、の部分が間違い。With or Withoutなので、なくてもよい
B:Order.StatusでOrderStatus.IdをOnly Withで結合しているため、StatusがないOrderは返りません
C:Employeeはなくてもよいので、Employeeがない=0人の場合もOrderが返るため、「Employeeが1人以上の」の部分が間違い
#5 Aggregate (Group By)
「PriorityごとのOrderの数を返す」なので、
- (Priorityごとの)Priorityを一意に特定できる列にGroup Byする
- (Orderの数を返す)Orderの列にCountをつける
が必要です。
選択肢Bが該当しますね。