2010-06-19 14 views
11

Dzień dobry!Jak używać wielojęzycznego schematu bazy danych z ORM?

Szukam najlepszego sposobu na wdrożenie wielojęzycznego schematu bazy danych, podejście, którego używam, jest takie samo jak tutaj: What are best practices for multi-language database design? (jedna tabela z danymi neutralnymi językowo i jedna dla wszystkich tłumaczeń). Wydaje się być dobry i czysty i nie ogranicza liczby możliwych języków.

Ale chcę użyć prostego ORM (jak LINQ w C#, Outlet for PHP itp.), Gdzie każda tabela jest mapowana do klasy encji. To może zadziałać, ale zapytania stały się bardziej złożone.

Może być kilka specjalnych technik, aby użyć takiego DB Shema z ORM? Czy mogę skorzystać z bardziej złożonych ORM, które obsługują bardziej złożone odwzorowania?

Z góry dziękuję!

Odpowiedz

18

Użycie tylko jednej tabeli dla wszystkich tłumaczeń może szybko doprowadzić do poważnych problemów z wydajnością i złożonością dla każdej operacji (wybierz/wstaw/aktualizuj/usuń); spróbuj go zrozumieć, o co mi chodzi.

Chciałbym następnie przejść do poniższej metody (dwie tabele na "przetłumaczalny" obiekt), który wydaje się być dobrym balans między problemami wydajności, złożoności i konserwacji.

product 
    - id (PK) 
    - number1 
    - number2 
    - date1 
    - date2 
    ... 

product_i18n 
    - id (PK) 
    - product_id (FK) 
    - language_id (FK) 
    - string1 
    - string2 
    ... 

language 
    - id (PK) 
    - name 

Sprawdź jak to się robi z Propel ORM (PHP): http://propelorm.org/blog/2011/01/11/propel-gets-i18n-behavior-and-why-it-matters.html

HTH

+0

Dzięki, że ten sam schemat DB używam, ale niestety ORMS że zastosowanie (LINQ2SQL na .NET i wylot dla PHP) nie obsługuje takich scenariuszy bezpośrednio. Z pewnością zajrzę do Propel. – artvolk

+0

jak zrobiłbyś awarię w tym przypadku? – GorillaApe

+0

Dlaczego potrzebujesz pomocy zastępczej? –

Powiązane problemy