いくつかのパターンを考えた上で。
成果物
名字
./sql/create/table/LastNames.sql
create table LastNames( Id int not null, Yomi text not null, Kaki text not null, primary key(Id), unique(Yomi,Kaki) )
名前
性別による分配をどう実装するか。
- 表を分ける
- 列を追加する
- text型
- int型
列を追加する
text型
これを採用した。
create table FirstNames( Id int not null, Yomi text not null, Kaki text not null, Sex text not null, primary key(Id), unique(Yomi,Kaki), check(Sex='m' or Sex='f' or Sex='c' or Sex='mc' or Sex='fc' or Sex='cm' or Sex='cf') )
int型
性別7種をint型で表す。うまく表現できない。わかりにくい等の問題から不採用。
IsYomi | IsKaki |
---|---|
m | m |
f | f |
c | c |
m | c |
f | c |
c | m |
c | f |
3進数2桁。
yk | 意味 |
---|---|
11 | mm |
22 | ff |
33 | cc |
13 | mc |
23 | fc |
31 | cm |
32 | cf |
2進数3桁。mfc
Y | K | 意味 |
---|---|---|
100 | 100 | mm |
010 | 010 | ff |
001 | 001 | cc |
100 | 001 | mc |
10進数1桁。7種。
yk | 意味 |
---|---|
0 | 無効値 |
1 | m |
2 | f |
3 | c |
4 | mc |
5 | fc |
6 | cm |
7 | cf |
表を分ける
性別列が不要になるが、性別の制御をテーブル名で行わねばならない。テーブル間におけるunique制約が付与できない、抽出条件がわかりづらいなどの難点から不採用。
- FirstNameMs.sql
- FirstNameFs.sql
- FirstNameCs.sql
- FirstNameMCs.sql
- FirstNameFCs.sql
- FirstNameCMs.sql
- FirstNameCFs.sql
./sql/create/table/FirstNameMs.sql
create table FirstNameMs( Id int not null, Yomi text not null, Kaki text not null, primary key(Id), unique(Yomi,Kaki),
対象環境
- Raspbierry pi 4 Model B
- Raspbian buster 10.0 2019-09-26 ※
- bash 5.0.3(1)-release 学習まとめ
- SQLite 3.33.0 ※ 学習まとめ
$ uname -a Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux