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

顧客の複数のアドレスとデフォルトアドレスのMySQLデータベース設計

    私の見解では、あなたはこれをあまりにも複雑にしている。アドレススキーマをそれほど正規化する必要はありません。複数の顧客アドレスを処理する私が見たほとんどのシステムには、次のような顧客テーブルがあり、次にアドレステーブルがあります。

     customer_id
     address_ordinal  (small number for each customer: 0,1,2,3 etc).
     primary    (boolean)
     address_1
     address_2
     locality   (city, village, etc)
     province   (state, etc)
     postcode   (zip, postcode etc)
     country
    

    customer_id customerへの外部キーです テーブル。主キーは(customer_idの複合です 、address_ordinal )。 primary 列はtrue アドレスがプライマリアドレスの場合。

    サプライヤに関する質問については、「連絡先」と呼ばれる共通のテーブルを作成し、顧客とサプライヤの両方にcontact_idsを指定することをお勧めします。

    システムに(郵便番号、地域、州)行を含む参照テーブル(おそらくデータサプライヤから購入したもの)が含まれている場合は、それを使用してアドレステーブルにデータを入力できます。ただし、アドレスにハードコードされた郵便番号のみを含めるように強制することは避けてください。これらの参照テーブルは非常に早く古くなります。



    1. 値が変更されたときにMySQLはユーザー変数をインクリメントします

    2. zip形式のCSVファイルをPostgreSQLにインポートする

    3. 指定された時間の間の日付についてアクティブレコードでSQLをクエリする方法

    4. 内部結合を使用してSQLで記述された継承クエリを記述しますか?