テーブルはレコード型に直接マッピングする
from リレーショナルデータベースを扱う
FP におけるオブジェクト(関数型モデル)は、RDB との親和性が高い
データと 振る舞い が混在しないことで、レコードの保存や取得がより直接的になるため
そこで、DMMF: Serialization に倣って「テーブルを レコード型 に直接マッピング」する戦略を取る
この戦略には、以下のようなメリットがある
RDB のテーブルが、レコードのコレクションに対応する
RDB 上の SELECT や WHERE などの集合指向の操作が、map や filter などのリスト指向の操作に似ている
一方、以下のようなミスマッチも発生する
RDB にはプリミティブな値しか保存できない
選択型 に対応できない
e.g.
以下のような ドメインモデル を仮定する
code:fsharp
type CustomerId = CustomerId of int
type String50 = String50 of string
type Birthdate = Birthdate of DateTime
type Customer =
{ CustomerId: CustomerId
Name: String50
Birthdate: Birthdate }
テーブル設計は以下
code:sql
CREATE TABLE Customer (
CustomerId int NOT NULL,
Name NVARCHAR(50) NOT NULL,
Birthdate DATETIME NULL,
CONSTRAINT PK_Customer PRIMARY KEY (CustomerId)
)