gpt4 book ai didi

database - 三个客户地址在一个表中还是在不同的表中?

转载 作者:太空狗 更新时间:2023-10-30 01:42:34 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个 Customer 类和一个 Address 类。 Customer 类具有 Address 类的三个实例:customerAddressdeliveryAddressinvoiceAddress.

在数据库中反射(reflect)这种结构的最佳方式是什么?

  • 最简单的方法是使用客户表和单独的地址表。
  • 一种更加非规范化的方式是仅包含每个地址列的客户表(“街道”示例:customer_street、delivery_street、invoice_street)

您对此有何体验?这些方法有什么优点和缺点吗?

最佳答案

如果您 100% 确定客户只会拥有您描述的 3 个地址,那么这没问题:

CREATE TABLE Customer
(
ID int not null IDENTITY(1,1) PRIMARY KEY,
Name varchar(60) not null,
customerAddress int not null
CONSTRAINT FK_Address1_AddressID FOREIGN KEY References Address(ID),
deliveryAddress int null
CONSTRAINT FK_Address2_AddressID FOREIGN KEY References Address(ID),
invoiceAddress int null
CONSTRAINT FK_Address3_AddressID FOREIGN KEY References Address(ID),
-- etc
)

CREATE TABLE Address
(
ID int not null IDENTITY(1,1) PRIMARY KEY,
Street varchar(120) not null
-- etc
)

否则我会这样建模:

CREATE TABLE Customer
(
ID int not null IDENTITY(1,1) PRIMARY KEY,
Name varchar(60) not null
-- etc
)

CREATE TABLE Address
(
ID int not null IDENTITY(1,1) PRIMARY KEY,
CustomerID int not null
CONSTRAINT FK_Customer_CustomerID FOREIGN KEY References Customer(ID),
Street varchar(120) not null,
AddressType int not null
-- etc
)

关于database - 三个客户地址在一个表中还是在不同的表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/311074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com