国际供应商数据库设计及支持语言



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

我想高效地查询:
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 {supplierID: PK, FK, statid: PK, FK}
我对这个设计有几个问题:
  1. 如果一个国家没有州(例如:埃及)该怎么办?对于这些情况,我考虑使用countryID=0。所以在Country_Table中,Texas是州,USA是国家。然而,埃及是一个国家id为0的国家。这是一个有效的解决方案吗?
  2. 对于供应商支持的每种语言,我需要插入一行。以后按语言查询供应商是否有效,或者是否有更好的解决方案?
  3. 在Supplier_State_Table中,我需要为供应商提供的每个状态插入一行。这似乎效率低下。我想用stateID 0来表示整个世界。但即便如此,如果供应商只向美国提供服务,那么为每个美国州提供数据行似乎很疯狂。

1)不。相反,有Supplier_State_TableSupplier_Country_Table

这很好。

最新更新