gpt4 book ai didi

MySQL 数据库设计 : one to one, 多对多、多对一或太多?

转载 作者:搜寻专家 更新时间:2023-10-30 20:31:08 25 4
gpt4 key购买 nike

我正在为我的第一个项目在我的数据库中设置表。 (令人兴奋!)

我很难决定我需要建立什么类型的关系。

我计划了以下基本表格。

products
-----
id
product_name
product_details
product_url
product_img
category_id
business_id


categories
-----
id
category_name
category_description
category_slug


businesses
----------------
id
business_name
business_phone
business_address
business_city
state_id
business_zip

state
-----
id
state_name

我遇到的问题是决定建立什么类型的关系。

每个产品只能属于1个类别,也只能属于1个业务

至于business 表,我想知道将cityzip-code 分成单独的表是否更好。

我希望能够按类别城市 检索产品,例如:“洛杉矶”中的“鞋子”,或者只是“鞋子”或“洛杉矶”中的所有产品

任何人都可以提供一些见解或分享他们的经验。由于我已准备好设置我的表格,所以我宁愿现在就制定这些方案,然后再进行一半的开发。

最佳答案

您的设计还不错 - 非常干净。我在任何地方都看不到多对多 - 它似乎是一个直接的层次结构。

此外,您的思维过程似乎很清晰 - 不断问自己这些类型的问题,您会没事的。

不过,我有以下建议:

首先,始终以单数命名您的表,business 而不是 businesses

其次,尽量避免将表名作为列名的前缀,所以 name 而不是 business_name - 当您在查询中引用它时,它很明显:business.name(business.business_name 中多余的business_ 是多余的)

另外,因为zip在一个城市,而city在一个州,业务上存储city和state是冗余数据,所以你大概应该这样做:

business
----------------
id
name
phone
address
zip_code_id

zip_code
--------
id
city_id
name

city
----
id
state_id
name

state
-----
id
name

要回答您的问题和查询,您可以使用此架构获得所需内容。除非你真的有麻烦,否则我不会在这里发布它,但它们是非常简单的查询,所以我会把它留给你解决。

关于MySQL 数据库设计 : one to one, 多对多、多对一或太多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6879729/

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