Posts Issued on November 1, 2022

posted by sakurai on November 1, 2022 #542

はじめに

ハードウェアの設計と並行してソフトウェアを設計します。まずは、PHPフレームワークであるyii/yii2と、laravelを取り上げます。これら3者を用いて同じテーマでアプリケーションを設計します。

対象となるアプリケーションは、弊社社内で使用している「資料一覧表」の作成とします。一覧表の作成は非常に汎用的であり、資料に限らず10以上のモノを管理しようとすると、一覧表は不可欠です。

データベース設計

docsとcategoryの2つの表で管理します。docsとその例を表542.1で示します。

表542.1 資料(docs)表
id 題名(title) ページ数(pages) 保存場所(link) 分類(category_id)
1 ISO 26262 第1版 Part 1 29 1
2 ISO 26262 第1版 Part 2 35 1
3 平成26年度電子部品信頼性調査研究委員会報告 (FIDESの解説) 125 2
4 平成27年度電子部品信頼性調査研究委員会報告-改 (IEC/TR 62380, FIDES)  192 2
5 Bluespec SystemVerilogリファレンスガイド 453 3
6 BSVユーザガイド 142 3
: : : : :

次に分類(category)表とその例を表542.2で示します。

表542.2 分類(category)表
id 分類(category)
1 車載機能安全規格
2 故障率データベース
3 技術文書
: :

categoryをdocsの表に埋め込めば一枚の表にすることは可能ですが、このように表を分離し、categoryをユニークにすることにより、n対1の関係となるので、修正が容易となるメリットがあります。

(参考情報)https://johobase.com/dividing-multiple-tables-merit/

ここに示されるように、資料表のレコードが100万件有り、分類に修正が入ると100万レコードの修正になるのに対し、表が分離されていると1つのレコードの修正で済みます。

このcategory_idカラムのように他の表のインデクスとなっているカラムをフォーリンキーと呼び、これでリレーションが張られていることになります。この「関係性」の機能を持つデータベースをリレーショナルデータベースと呼びます。


左矢前のブログ 次のブログ右矢