gpt4 book ai didi

database-design - 数据库设计 : Relationship example between Credit Card and Credit Card Type

转载 作者:行者123 更新时间:2023-12-04 07:02:32 24 4
gpt4 key购买 nike

一个可以帮助我更好地理解数据库关系的通用示例:

3张 table :

| Credit Card |
| ID |
| Card # |

| Credit Card Type |
| ID |
| Type |

其中 CreditCardType.Type 可以是 AMEX、Visa、MasterCard。
| Customer |
| (PK) ID |

1.) 似乎我不需要 CreditCardType 的 ID 字段,因为类型是事实上的主键。即使有一个唯一的 varchar,为 PK 提供一个数字字段是否有益?

2.) 因为每张信用卡都必须有一个并且只有一个类型...我是否在信用卡和信用卡类型之间设置了 1:1 的识别关系?

3.) 客户可以拥有 0、1 或更多张信用卡。所以我在信用卡和客户之间创建了一个 1:n 的关系。当我这样做时,MySQL Workbench 将 Customer.ID 字段和 Customer.PersonTypeID 字段添加为主键。这是我应该做的,还是我只需要将 Customer.ID 字段添加为 PK。还是应该是FK?
| Credit Card      | 
| (PK) ID |
| Card # |
| (PK) Customer.ID |
| (PK) Customer.PersonType |

或者
| Credit Card      | 
| (PK) ID |
| Card # |
| (FK) Customer.ID |

最佳答案

我会这样做:

Customer
Id int

CreditCardType:
Id int
TypeName varchar (eg. Visa)

CreditCard
Id int
CreditCardTypeId int
CustomerId int
CardNumber varchar

尽管您可以说信用卡类型不需要 id,因为 TypeName 是唯一的,但最好让外键列是数字,因为它们占用的磁盘空间更少。假设您有一个 CreditCardType “American Express”,它是 CreditCardType 的主键,您必须在 CreditCard 表中为每一行使用该值。如果您有数百万张已注册的信用卡,那么存储每一行​​的字符串将占用相当多的空间。

关于database-design - 数据库设计 : Relationship example between Credit Card and Credit Card Type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3634874/

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