2013-05-18 30 views
0

我是数据库领域的新手,想要设计一个包含许多服务提供者的数据库。一些在全球提供服务,一些仅为少数几个州提供服务。另外,我需要存储他们可以支持其客户的语言。针对国际供应商及其支持语言的数据库设计

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

我想到了以下设计:

  • Country_Table {countryID:PK ...}
  • State_Table {STATEID:PK,countryID:FK ...}
  • Language_Table { ...}
  • Supplier_Table {supplierID:PK,supplierName,supplier address ...}
  • Supplier_Lang uage_Table {供应商ID:PK,FK,languageID:PK,FK}
  • Supplier_State_Table {供应商ID:PK,FK,STATEID:PK,FK}

我有这样的设计有几个问题:

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

任何帮助,将不胜感激。

回答

0

1)号相反,同时具有Supplier_State_TableSupplier_Country_Table

2)这是一个精细。

3)同样,这很好,数据库被设计来处理大量的数据。