テーブルはレコード型に直接マッピングする
FP におけるオブジェクト(関数型モデル)は、RDB との親和性が高い データと 振る舞い が混在しないことで、レコードの保存や取得がより直接的になるため この戦略には、以下のようなメリットがある
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)
)