sql >> データベース >  >> RDS >> PostgreSQL

両面マーケットプレイスでリレーショナルテーブルを構築する方法

    情報を関係的に、つまりテーブルに記録する基本的な方法を理解する必要があります。

    十分なテーブルを見つける

    ビジネスの状況を説明するために必要なすべてのステートメントのベーステーブルを用意するだけです。

    User(user_id,name,...)
        // User [user_id] is named [name]
    Contacted(contact_id,item,offer_id)
        // user [contact_id] was contacted re item [item] offered by user [offer_id]
    ...etc...
    

    ステートメントのパラメーターは、テーブルの列です。

    複数の部分(異種または同種)があると考える部分について話したい場合は、一部のステートメントに物とその部分が含まれることを意味します。

    table request(request_id,start_date,end_date,...)
        // [request_id] goes from [start_date] to [end_date] and ...
    table requested(request_id,item_id,person_id,...)
        // person [person_id] requested item [item_id] in request [request_id]
    

    テーブルの内容

    ベーステーブルの値は、そのステートメントを真にする行です。 (すべてのクエリ部分式にもステートメントがあり、その値はそのステートメントを真にする行です。)

    テーブルステートメントをビジネスルールと混同しないでください。ビジネスルールは真実を述べています。ただし、テーブルステートメントは、一部のタプルがtrue(およびテーブルに入る)またはfalse(テーブルから除外される)になるステートメントです。表のすべての真偽のステートメントは、ビジネスについて知る必要があるすべてを示しています。ビジネスルールがそれらと矛盾することは決してありません。 (それらは常に真実であるため。)

    より良いテーブルへの再配置

    キーは、他のすべての列がそのような関数である列のセットですが、そのサブセットにはそのプロパティがありません。テーブルには複数のキーを含めることができます。

    データベースの更新とクエリを簡単にするには、ANDで結合された他のステートメントである特定のステートメントを分割する必要があります。各ステートメントが、キー列に関するステートメントと次の形式のステートメントのみで構成されるまで分割します。

    [my_column]=my_function([key_k_column_1],[key_k_column_2],...)
    

    ここで、key_k_column_1、...は同じキーkey_nの列です。

    (このようなテーブルは「第5正規形」であり、トピックは「正規化」です。)




    1. 連続していない値を数える

    2. System.ArgumentException:テーブル型パラメーターには有効な型名が必要です

    3. Laravel localhostは機能しますが、herokuで500エラーが発生します

    4. データベース行を作成するmysqldump