我正在为我的第一个项目在数据库中建立表。(令人兴奋!)
我很难决定我需要建立什么样的关系。
我计划了下列基本的表格。
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
我陷入困境的是决定建立什么样的关系。
每个产品只能属于一个类别,并且只能属于一个业务
至于商务桌,我想知道把城市和邮政编码分开放在不同的桌子上是不是更好。
我希望能够按类别和城市检索产品,
例如:“Los Angeles”中的“Shoes”,或“Los Angeles”中的“Shoes”或所有产品
有人能提供一些见解或分享他们的经验吗?因为我已经准备好建立我的表了,我宁愿现在就制定出那些场景,然后在开发的中途完成。
最佳答案
你的设计很好-很干净。我在任何地方都看不到“多对多”—这似乎是一种直截了当的等级制度。
而且,你的思维过程似乎很清楚——不断地问自己这些问题,你就会没事的。
不过,我有以下建议:
首先,总是用单数命名表,business
而不是businesses
。
其次,尽量避免将表名预先设置为列名,因此name
,而不是business_name
——在查询中引用它时,显然是:business.name
(business_
中的额外business.business_name
是多余的)
另外,由于ZIP位于城市中,而城市位于一个州中,因此在业务上存储城市和州是多余的数据,因此您可能应该这样做:
business
----------------
id
name
phone
address
zip_code_id
zip_code
--------
id
city_id
name
city
----
id
state_id
name
state
-----
id
name
要回答重新查询的问题,可以使用此架构获得所需的内容。除非你真的有麻烦,否则我不会把它贴在这里,但它们都是非常简单的查询,所以我会把这些留给你去解决。