我正在开发一个数据库,我有一个客户表,一个供应商表和一个地址表。我以为我会在地址表的每一行中放置一个客户ID和供应商ID,但允许它们为空。
供应商可能一次只有一个地址,但为了以防万一,我会创建它以允许多个地址。
客户通常会有2个地址,但可能有很多地址。
客户表格将包含字段" default_shipping_id"和" default_billing_id"
我可以在没有FOREIGN KEY约束的情况下执行此操作,但如果我尝试使用约束创建这些表,则由于循环引用而出现错误。我应该单向制作约束还是可以/应该在创建表之后添加约束?
答案 0 :(得分:1)
尝试设计数据库时要整洁灵活。 5个表格供您的解决方案使用 -
1) `address` table
`id`
`address`
2) `customers` table
`id`
`name`
`email`
3) `customer_address_mapping` table
`id`
`customer_id` (FK to `customers` table)
`address_id` (FK to `address` table)
`is_billing` (Boolean field)
`is_shipping` (Boolean field)
4) `vendors` table
`id`
`name`
`email`
5) `vendor_address_mapping` table
`id`
`vendor_id` (FK to `vendors` table)
`address_id` (FK to `address` table)
的说明:强>
address
表格将是所有dump
和addresses
中所有customers
的{{1}}。两个映射表都可以让您灵活地添加所需的地址。 vendors
和is_billing
布尔字段将告诉您客户的地址类型。