Raspberry Pi 3

raspbian 日本語化

$sudo raspi-config
-----
Innternnatiolisation Options > Change Locale > ja_JP.UTF-8
-----
$sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname
$sudo apt-get install uim uim-anthy
$sudo apt-get install jfbterm

USB接続したHDD(exFAT)をSambaでファイル共有

1.exFATを認識させる
$sudo apt-get install exfat-fuse
2.マウント
$sudo mkdir /mnt/hdd1
$sudo mount /mount/dev/sda1/ /mnt/hdd1/
3.Sambaインストール
$sudo apt-get install samba samba-common-bin
$sudo vi /etc/smb.conf
-----
[pi]
path=/mnt/hdd1/
guest ok = yes
read only = no
writable = yes
#force user = pi
create mode = 0775
directory mode = 0775
share modes = yes
-----
4.Samba再起動
$sudo service smbd restat
$sudo service nmbd restat

ここまでだと、読み込みができるが、書き込みが出来ない。
5.exFATは権限情報が持てないので、fstabの記述で書き込みを許可する。
$sudo vi /etc/fstab
-----
/dev/sda1 /mnt/hdd1 exfat-fuse async,auto,dev,exec,gid=65534,rw,uid=65534,umask=000 0 0
-----
$sudo mount -a

正規化

正規化はデータの冗長性を排除し、独立性を高めるために行う。
冗長性があると更新時異状が発生するため、「1事実1箇所」にする事で正規化していく。

正規化を行わない場合、追加や削除を行った場合にデータの整合性が保たれない。
例:あるデータを追加したいが、別のデータが必要になり追加できない。
例:あるデータを削除すると、別のデータが消えてしまう。

また、冗長性があるため、更新処理のコストが高くなる。
例:あるデータを更新すると、同じデータを持つすべてのデータを更新する必要がある。

■正規化するために必要な用語
関数従属性・・・ある列の値Xが決まると、別の列の値Yも決まるとき、YはXに関数従属である。表記:X→Y
推移的関数従属性・・・ある関数従属関係から、新たな関数従属関係が得られるような場合。X→Y、Y→Zのとき、X→Zは推移的関数従属性を持つ。
完全関数従属・・・キーの全てにのみ従属する。{A,B}→Cののときに、A→C、B→Cが成り立たない。
部分関数従属・・・キーの全てまたは一部に従属する。{A,B}→Cの時に、A→CやB→Cが成り立つ場合。

■正規形の種類
実務では、基本的に第3正規形までを使用するが、利便性やパフォーマンスを考慮して非正規化することもある。

非正規形・・・正規化が行われていない状態。受注伝票を1テーブルで表現した様な場合。
第1正規形・・・キーを設定し、繰り返し、導出項目を排除する。
第2正規形・・・部分関数従属性を取り除く
第3正規形・・・推移関数従属性を取り除く
ボイス・コッド正規形・・・非キーからキーへの関数従属性を取り除く
第4正規形・・・対称性のある多値従属性を分解する。
第5正規形・・・結合従属性を維持して分解する。

■参考資料
http://www.slis.tsukuba.ac.jp/~uda.norihiko.fw/lecture/database/

候補キー

候補キーとは主キーになりうるキーのことである。
成立する条件は

1.一意に識別できること
2.極小であること(どれか一つでも欠けると一意にならないという意味)

一つのリレーションに2つ以上の候補キーが含まれる場合がある。
候補キーのうち、いずれか一つが主キーとなる。