试图设计数据库的一部分来保存地址、公司和联系人。我有一个设计,由于设计不佳,我现在已经完成了“清理”它的工作。
买了一份 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)
进行检查以确保所有信息仅存在一条记录。
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
进行检查以确保在指定地址只能存在一个具有该名称的公司
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
但这意味着,例如,如果我想将订单挂接到联系人上,我需要使用三个字段来完成。
这看起来正确还是我完全错过了重点?