6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[OutSystems]Associate Reactive Developerのサンプル問題について解説 1/4(#1-#5)

Last updated at Posted at 2021-06-10

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が該当しますね。

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?