2013-05-18 4 views
0

Я новичок в мире базы данных и хочу создать базу данных, содержащую множество поставщиков услуг. Некоторые предоставляют свои услуги по всему миру, некоторые - только для нескольких штатов. Кроме того, мне нужно сохранить язык, на котором они могут поддерживать своих клиентов.Дизайн базы данных для международных поставщиков и их язык поддержки

Я хочу эффективно запросить:
1) Все поставщики, обслуживающие определенное состояние.
2) Все поставщики, поддерживающие определенный язык.

Я думал о следующей конструкции:

  • Country_Table {CountryId: PK ...}
  • State_Table {stateID: PK, CountryId: FK ...}
  • Language_Table { LanguageID: PK, ....}
  • Supplier_Table {SupplierID: PK, SupplierName, поставщик адрес ...}
  • Supplier_Lang uage_Table {SupplierID: PK, FK, LanguageID: PK, FK}
  • Supplier_State_Table {SupplierID: PK, FK, stateID: PK, FK}

У меня есть несколько проблем с этим дизайном:

  1. Что делать в случае страны, которая не имеет штатов (например: Египет)? Я думал об использовании countryID = 0 для этих случаев. Итак, в Country_Table, штат Техас - это государство, а США - страна. Однако Египет является государством с идентификатором страны 0. Является ли это допустимым решением?
  2. Для каждого языка, который поддерживает поставщик, мне нужно вставить строку. Является ли он эффективным для более поздних запросов поставщиков по языку или есть лучшее решение?
  3. В Supplier_State_Table Мне нужно вставить строку для каждого состояния, которое предоставляет поставщик. Это кажется неэффективным. Я думал об использовании stateID 0, чтобы указать на весь мир. Но даже тогда, если поставщик предоставляет услуги только для США, наличие строки данных для каждого штата США кажется сумасшедшим.

Любая помощь будет оценена по достоинству.

ответ

0

1) № Вместо этого, имеют как Supplier_State_Table и Supplier_Country_Table

2) Это нормально.

3) Опять же, это нормально, базы данных предназначены для обработки большого количества данных.

Смежные вопросы