住所、会社、連絡先を保持するデータベースの一部を設計しようとしています。私はそれの1つのデザインを持っていましたが、デザインが悪いために「クリーニング」する仕事をしました。
私はプログラミングの角度から来ているので、参照用にJoe CelkoのSQLプログラマースタイルのコピーを購入したので、結局は...
Addresses
street_1_adr varchar(80) primary key
street_2_adr varchar(80)
street_3_adr varchar(80)
zip_code varchar(10) foreign key/primary key > Regions.zip_code
重複を防ぐために、すべてのアドレスが一意であることを確認するためのチェックを行います。
Regions
city varchar(80)
region varchar(80)
zip_code varchar(10) primary key
country_nbr integer foreign key/primary key > Countries.country_nbr
重複を防ぐために、すべてのリージョンが一意であることを確認するためのチェックを行います。
Countries
country_nbr integer primary key
country_nm varchar(80)
country_code char(3)
すべての情報に対して1つのレコードのみが存在することを確認するためのチェックを使用します。
Companies
company_nm varchar(80) primary key
street_1_adr varchar(80) foreign key > Addresses.street_1_adr
zip_code varchar(10) foreign key > Addresses.zip_code
Extra information
指定されたアドレスにその名前の会社が1つだけ存在できることを確認するためのチェック付き
Contacts
company_nm varchar(80) primary key/foreign key > Companies.company_nm
first_nm varchar(80) primary key
last_nm varchar(80) primary key
Extra information
ただし、これは、例として、連絡先に注文をフックする場合、3つのフィールドでそれを行う必要があることを意味します。
これは正しく見えますか、それとも私は完全に要点を見逃しましたか?