データベース設計スキル (3)
ヒント|設計|データ|データベース|データベース設計
著者: allsky
4 番目の正規化形式を定義する前に、まず 3 つの基本的なデータ関係、1 対 1、1 対多、多対多について触れたいと思います。最初の正規化されたユーザー テーブルを振り返ってみましょう。 url フィールドを別のテーブルに配置すると、users テーブルにレコードを挿入するたびに、url テーブルに行が挿入されます。 1 対 1 の関係が得られます。users テーブルの各行に対して、urls テーブルには対応する行が存在します。私たちのアプリケーションにとって、これは実用的でも標準でもありません。
次に、2番目の正則化の例を見てください。各ユーザー レコードについて、テーブルではレコードの複数の URL を関連付けることができます。これは 1 対多の関係であり、非常に一般的な関係です。
多対多の関係の場合、少し複雑になります。 3 番目の正規化された形式の例では、1 人のユーザーが多数の URL に関連付けられており、
複数のユーザーが複数の URL に関連付けられるように構造を変更して、複数の 1 対多の構造を取得できるようにしたいと考えています。説明する前に、テーブル構造の変更を見てみましょう
users
userId name relCompId
1 Joe 1
2 Jill 2
Companies
compId company company_address
1 ABC 1 Work Lane
2
1 1 1
2 1 2
3 2 1
4 2 2
データの冗長性をさらに減らすために、第 4 レベルの正則化形式を使用します。かなり奇妙な url_relations テーブルを作成しました。そのテーブル内のフィールドはすべて主キーまたは外部キーです。このテーブルを通じて、urls テーブル内の重複する項目を削除できます。 4 番目の正規化形式の具体的な要件は次のとおりです:
4 番目の正規化形式
1. 多対多のリレーションシップでは、独立したエンティティを同じテーブルに格納することはできません
これは多対多にのみ適用されるため、 -多くの関係があるため、ほとんどの開発者はこのルールを無視できます。ただし、場合によっては、この
の例のように、同じエンティティを分離し、関係を独自のテーブルに移動することで URL テーブルを改善した場合のように、非常に実用的になることがあります。
理解しやすいように、具体的な例を挙げてみましょう。以下では、SQL ステートメントを使用して、joe に属するすべての URL を選択します。 users.userId = 1 AND urls.urlId = url_relations.popularUrlId
全員の個人情報と URL 情報を繰り返し処理したい場合は、次のようにすることができます:
SELECT name, url FROM users, urls, url_relationswheresusers.userId = url_relations. requiredUserId AND
urls.urlId = url_relations.popularUrlId
正規化の 5 番目のレベル
正規化の 1 番目のレベルもありますが、これは一般的ではなく、少し難解で、ほとんどの場合は不要です。その原則は次のとおりです:
1. 元のテーブルは、それから分離されたテーブルを通じて再構築できる必要があります
この規定を使用する利点は、分離されたテーブルに冗長な列が導入されないことを保証できることです。 create テーブル構造はすべて、実際に必要な大きさです。このルールを適用することをお勧めしますが、非常に大規模なデータ セットを扱う場合を除き、このルールを使用する必要はありません。
この記事があなたのお役に立ち、これらの形式化されたルールをすべてのプロジェクトに適用するのに役立つことを願っています。これらのメソッドがどこから来たのか疑問に思われるかもしれませんが、最初の 3 つの正規化規則は 1972 年に E.F. コッド博士の論文「データベースのリレーショナル モデルのさらなる正規化」で提案され、残りの規則は理論化されました。後に集合論と関係数学者となる。コメント: よく言われるように、テーブルを細かく分割しすぎると、テーブル間にさまざまな相関関係が必要になり、クエリが複雑になり、効率も低下する可能性があるため、場合によっては、レベルを逆転する必要があります。これらの正規化については、プロジェクトの規模に応じて、必要に応じていくつかのテストを実行して、より合理的なテーブル構造を設計することができます。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 関数の紹介 - get_headers(): URL の応答ヘッダー情報の取得の概要: PHP 開発では、Web ページまたはリモート リソースの応答ヘッダー情報を取得する必要があることがよくあります。 PHP 関数 get_headers() を使用すると、対象 URL の応答ヘッダー情報を簡単に取得し、配列の形式で返すことができます。この記事では、get_headers() 関数の使用法を紹介し、関連するコード例をいくつか示します。 get_headers() 関数の使用法: get_header

エラーの理由は、urllib3 ライブラリの例外タイプである NameResolutionError(self.host,self,e)frome です。このエラーの理由は、DNS 解決が失敗したこと、つまり、ホスト名または IP アドレスが試みられたことです。解決できるものが見つかりません。これは、入力された URL アドレスが間違っているか、DNS サーバーが一時的に利用できないことが原因である可能性があります。このエラーを解決する方法 このエラーを解決するにはいくつかの方法があります。 入力された URL アドレスが正しいかどうかを確認し、アクセス可能であることを確認します。 DNS サーバーが利用可能であることを確認します。コマンド ラインで「ping」コマンドを使用してみてください。 DNS サーバーが利用可能かどうかをテストします。プロキシの背後にある場合は、ホスト名の代わりに IP アドレスを使用して Web サイトにアクセスしてみてください。

現在、ゲームを愛する多くの Windows ユーザーが Steam クライアントにアクセスし、優れたゲームを検索、ダウンロードしてプレイすることができます。ただし、多くのユーザーのプロフィールがまったく同じ名前である可能性があるため、プロフィールを見つけたり、Steam プロフィールを他のサードパーティのアカウントにリンクしたり、Steam フォーラムに参加してコンテンツを共有したりすることさえ困難になります。プロファイルには一意の 17 桁の ID が割り当てられます。ID は変更されず、ユーザーがいつでも変更することはできませんが、ユーザー名またはカスタム URL は変更できます。いずれにせよ、一部のユーザーは自分の Steamid を知らないため、これを知ることが重要です。アカウントの Steamid を見つける方法がわからなくても、慌てる必要はありません。記事上で

url を使用して、クラス java.net.URLDecoder.decode(url, decoding format) decoder.decoding メソッドのエンコードとデコードをエンコードおよびデコードします。通常の文字列に変換するには、URLEncoder.decode(url, エンコード形式) を使用して、通常の文字列を指定された形式の文字列に変換します。 packagecom.zixue.springbootmybatis.test;importjava.io.UnsupportedEncodingException;importjava.net.URLDecoder;importjava.net。 URLエンコーダ

相違点: 1. 定義が異なります。URL はユニフォーム リソース ロケーターであり、HTML はハイパーテキスト マークアップ言語です。 2. HTML には多数の URL を含めることができますが、URL 内に存在できる HTML ページは 1 つだけです。 3. HTML は is を指します。 Web ページ、url は Web サイトのアドレスを指します。

Scrapy は、インターネットから大量のデータを取得するために使用できる強力な Python クローラー フレームワークです。ただし、Scrapy を開発する場合、重複した URL をクロールするという問題が頻繁に発生します。これは、多くの時間とリソースを無駄にし、効率に影響を与えます。この記事では、重複 URL のクロールを減らし、Scrapy クローラーの効率を向上させるための Scrapy 最適化テクニックをいくつか紹介します。 1. Scrapy クローラーの start_urls 属性と allowed_domains 属性を使用して、

場合によっては、サービス コントローラーのプレフィックスが一貫している場合があります。たとえば、すべての URL のプレフィックスは /context-path/api/v1 であり、一部の URL には統一されたプレフィックスを追加する必要があります。考えられる解決策は、サービスのコンテキスト パスを変更し、コンテキスト パスに api/v1 を追加することです。グローバル プレフィックスを変更すると、上記の問題を解決できますが、欠点もあります。URL に複数のプレフィックスがある場合、たとえば、 URL にはプレフィックスが必要です。api/v2 の場合は区別できません。サービス内の一部の静的リソースに api/v1 を追加したくない場合は、区別できません。以下では、カスタム アノテーションを使用して、特定の URL プレフィックスを均一に追加します。 1つ、

この記事のシステム: centos6.5_x64 3 つのホスト: nginx ホスト、ホスト名:master.lansgg.comip:192.168.10.128 apache ホスト、ホスト名:client1.lansgg.comip:192.168.10.129 1. nginx アドレス リダイレクト 2. nginx リバース プロキシ1. アドレス リダイレクト: ユーザーが特定の URL を閲覧するときに、別の URL に誘導するテクノロジーを指します。長い URL を短い URL に変換するためによく使用されます。 Web サイトを広める場合、URL が長すぎて覚えにくい場合や、インターネットの無料 Web スペースが変更された場合が多いためです。
