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}
我有这样的设计有几个问题:
- 如果一个国家没有国家(例如:埃及),该怎么办?我想这些情况下使用countryID = 0。所以在Country_Table中,得克萨斯州是国家,美国是这个国家。但是,埃及是一个国家ID为0的州。这是一个有效的解决方案?
- 对于供应商支持的每种语言,我需要插入一行。以后通过语言查询供应商是否有效,还是有更好的解决方案?
- 在Supplier_State_Table中,我需要为供应商提供的每个状态插入一行。这似乎效率低下。我想用stateID 0来表示整个世界。但即使如此,如果供应商仅向美国提供服务,那么在美国每个州都有一个数据行似乎很疯狂。
任何帮助,将不胜感激。