0

我是数据库世界的新手,想设计一个包含许多服务提供商的数据库。有些在世界各地提供服务,有些只为少数几个州提供服务。此外,我需要存储他们可以支持客户的语言。

我想有效地查询:
1)服务于某个状态的所有供应商。
2) 所有支持某种语言的供应商。

我想到了以下设计:

  • Country_Table {countryID : PK ...}
  • State_Table {stateID:PK,countryID:FK ...}
  • Language_Table {languageID: PK, ....}
  • Supplier_Table {supplierID : PK、supplierName、供应商地址...}
  • Supplier_Language_Table {supplierID : PK,FK , languageID : PK, FK}
  • Supplier_State_Table {供应商ID:PK,FK,stateID:PK,FK}

我对这个设计有一些问题:

  1. 如果一个国家没有州(例如:埃及),该怎么办?我想在这些情况下使用 countryID=0 。所以在 Country_Table 中,Texas 是 state,USA 是 country。但是,埃及是一个国家 ID 为 0 的州。这是一个有效的解决方案吗?
  2. 对于供应商支持的每种语言,我需要插入一行。以后通过语言查询供应商效率高还是有更好的解决方案?
  3. 在 Supplier_State_Table 我需要为供应商提供的每个状态插入一行。这似乎效率低下。我想用 stateID 0 来表示整个世界。但即便如此,如果供应商只向美国提供服务,那么为每个美国州设置一个数据行似乎很疯狂。

任何帮助,将不胜感激。

4

1 回答 1

0

1) 不。相反,同时拥有 aSupplier_State_TableSupplier_Country_Table

2)这很好。

3) 同样,这很好,数据库旨在处理大量数据。

于 2013-05-18T22:18:14.583 回答