<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>テーブル &#8211; システム開発・AI導入なら株式会社taiziii（タイジー</title>
	<atom:link href="https://taiziii.com/column_cat/table/feed/" rel="self" type="application/rss+xml" />
	<link>https://taiziii.com</link>
	<description>事業理解に強いITコンサルタントとフルスタックエンジニアが、Webサービス・アプリ・業務システムを戦略設計から実装・保守運用まで一気通貫で支援。AI活用や内製化支援で成果に直結する開発を実現します。</description>
	<lastBuildDate>Wed, 19 Feb 2025 15:04:40 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://taiziii.com/wp-content/uploads/2023/10/favicon.ico</url>
	<title>テーブル &#8211; システム開発・AI導入なら株式会社taiziii（タイジー</title>
	<link>https://taiziii.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>テーブル設計の基本 〜正規化について〜</title>
		<link>https://taiziii.com/column/368/</link>
		
		<dc:creator><![CDATA[THiNGMAjiG_admin_user_kato]]></dc:creator>
		<pubDate>Sat, 29 Jul 2023 13:22:05 +0000</pubDate>
				<guid isPermaLink="false">https://taiziii.com/?post_type=column&#038;p=368</guid>

					<description><![CDATA[今回は、テーブルの正規化に関する内容だね！ 楽しみです! 本記事で学べること ・正規化について はじめに アプリケーション開発において、テーブル設計が重要なのは、開発に携わったことがある人なら誰でも知っていることだと思い [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class="balloonWrap">
<div class="balloon2-left">
<p>今回は、テーブルの正規化に関する内容だね！</p>
</div>
<div class="balloon2-right">
<p>楽しみです!</p>
</div>
</div>
<h2>本記事で学べること</h2>
<p>・正規化について</p>
<h2>はじめに</h2>
<p>アプリケーション開発において、テーブル設計が重要なのは、開発に携わったことがある人なら誰でも知っていることだと思います。しかしながら、具体的にどのように設計すればよいのかを知っている人は意外にも多くありません。そこで本記事では、テーブル設計の基本的な考え方である正規化について紹介したいと思います。</p>
<h2>正規化とは</h2>
<p>正規化とは、データの重複をなくし、データの更新に適したテーブルとなるように整理する作業です。正規化には、第一正規化から第五正規化まであります。実務で使われるのは第三正規化までなので、今回は第一正規化から第三正規化までの手順を紹介します。なお、第一正規化されたテーブルを第一正規形、第二正規化されたテーブルを第二正規形、第三正規化されたテーブルを第三正規形と呼びます。</p>
<h2>正規化のメリット</h2>
<p>正規化の手順を説明する前に、正規化のメリットについて説明しておきましょう。具体的には、以下の3つが考えられます。</p>
<p style="font-weight: bold;">・データの重複を排除することで、データの不整合を防ぐことができます。</p>
<p style="font-weight: bold;">・データの検索や更新を効率化することができます。</p>
<p style="font-weight: bold;">・データの冗長性を排除することで、データベースのサイズを削減することができます。</p>
<h2>正規化の手順</h2>
<p>それでは、第一正規化から第三正規化まで順を追って説明していきます。今回は、以下のテーブルを正規化することにします。<br />
&nbsp;<br />
<img decoding="async" data-src="https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.18.05-300x50.png" alt="" width="300" height="50" class="alignnone size-medium wp-image-384 lazyload" data-srcset="https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.18.05-300x50.png 300w, https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.18.05-1024x170.png 1024w, https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.18.05-768x127.png 768w, https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.18.05.png 1278w" sizes="(max-width: 300px) 100vw, 300px" ><br />
&nbsp;</p>
<h3>第一正規化</h3>
<p>第一正規形は、以下の条件を満たす必要があります。<br />
&nbsp;</p>
<p style="font-weight: bold;">テーブル中に複数の値を持つようなデータ項目を含まない</p>
<p>&nbsp;<br />
先のテーブルでは、資格の項目に、{英検1級, 簿記1級} と、複数の値が入っています。この場合、値ごとに行を分ける必要があります。<br />
&nbsp;<br />
<img decoding="async" data-src="https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.57.12-300x61.png" alt="" width="300" height="61" class="alignnone size-medium wp-image-390 lazyload" data-srcset="https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.57.12-300x61.png 300w, https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.57.12-1024x209.png 1024w, https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.57.12-768x157.png 768w, https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.57.12.png 1256w" sizes="(max-width: 300px) 100vw, 300px" ><br />
&nbsp;</p>
<h3>第二正規化</h3>
<p>第二正規形は、以下の条件を満たす必要があります。<br />
&nbsp;</p>
<p style="font-weight: bold;">第一正規形のテーブルに対して、主キーの一部の項目だけに従属するような項目（部分関数従属と呼ぶ）を含まない</p>
<p>&nbsp;<br />
第一正規化が終わると、今度は属性間の関係に注目します。今回のテーブルでは、主キーが社員番号と資格の複合キーになっているとします（主キーが単独属性の場合、部分関数従属が起こることがないので、第二正規化を行う必要はありません）。なお、以下では主キーを太字で表します。<br />
&nbsp;<br />
<img decoding="async" data-src="https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.18.24-300x22.png" alt="" width="300" height="22" class="alignnone size-medium wp-image-385 lazyload" data-srcset="https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.18.24-300x22.png 300w, https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.18.24-1024x77.png 1024w, https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.18.24-768x58.png 768w, https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.18.24.png 1254w" sizes="(max-width: 300px) 100vw, 300px" ><br />
&nbsp;<br />
一般的に、社員番号が決まれば、氏名、部署番号、部署名は一意に決まります。しかし、資格が決まってもこれらの属性が決まることはありません。つまり、氏名、部署番号、部署は主キーに対して部分関数従属することになります。したがって、テーブルから社員番号を分離し、社員番号と資格のテーブルを新たに追加します。</p>
<p>&nbsp;<br />
<img loading="lazy" decoding="async" data-src="https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.45.37-300x63.png" alt="" width="300" height="63" class="alignnone size-medium wp-image-388 lazyload" data-srcset="https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.45.37-300x63.png 300w, https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.45.37-1024x216.png 1024w, https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.45.37-768x162.png 768w, https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.45.37.png 1268w" sizes="auto, (max-width: 300px) 100vw, 300px" ><br />
&nbsp;</p>
<h3>第三正規化</h3>
<p>第三正規形は、以下の条件を満たす必要があります。<br />
&nbsp;</p>
<p style="font-weight: bold;">第二正規形のテーブルに対して、主キー以外の項目に従属するような項目（推移的関数従属と呼ぶ）を含まない</p>
<p>&nbsp;<br />
1番目のテーブルを見ると、部署名は部署番号によって決まります。つまり、部署名は主キーである社員番号ではなく部署番号に従属しているということになります。したがって、部署番号と部署名を分離して、新たなテーブルを作ります。</p>
<p>&nbsp;<br />
<img loading="lazy" decoding="async" data-src="https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.45.46-300x105.png" alt="" width="300" height="105" class="alignnone size-medium wp-image-389 lazyload" data-srcset="https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.45.46-300x105.png 300w, https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.45.46-1024x357.png 1024w, https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.45.46-768x268.png 768w, https://taiziii.com/wp-content/uploads/2023/07/スクリーンショット-2023-08-06-18.45.46.png 1272w" sizes="auto, (max-width: 300px) 100vw, 300px" ><br />
&nbsp;</p>
<p>以上で、第三正規化まで終わりました。この作業手順を追うことで、初心者でもテーブル設計ができるようになります。</p>
<h2>まとめ</h2>
<p>本記事では、テーブルの正規化について説明しました。これはテーブル設計において基本的な考え方であるため、しっかりと理解しておくと開発に役立つと思います。テーブル設計には他にも重要な考え方があるので、機会があればまた紹介したいと思います。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
