2011-02-05 2 views
1

Я разрабатываю схему базы данных, используя PostgreSQL. У меня есть некоторые сомнения относительно того, какой дизайн я должен использовать.Дизайн базы данных. Какую конструкцию я должен использовать? Два варианта

В таблице tdir_details_uris_text будет иметь много миллионов регистров, каждый ключ domain, uri, id_language будет иметь около 10/20 регистров.

Какой дизайн должен хорошо работать? Дизайн трех таблиц или дизайн двух таблиц?

С наилучшими пожеланиями,

PS: Извините за мой плохой английский.

enter image description here

enter image description here


Update: Просто чтобы добавить вставку в примере

insert into tdir_details_uris_text (domain, uri, id_language, id_categorie, id_data, id_ordinal, n_text) values ('motors.shop.ebay.com', 'http://cgi.ebay.com/ebaymotors/2009-FORD-MUSTANG-GT-BLACK-BEAUTY-16K-MILES-WOW-/230580626087?pt=US_Cars_Trucks&hash=item35afad22a7', 'en', '23', 'title_webpage', '1', '2009 Ford Mustang GT'); 
insert into tdir_details_uris_text (domain, uri, id_language, id_categorie, id_data, id_ordinal, n_text) values ('motors.shop.ebay.com', 'http://cgi.ebay.com/ebaymotors/2009-FORD-MUSTANG-GT-BLACK-BEAUTY-16K-MILES-WOW-/230580626087?pt=US_Cars_Trucks&hash=item35afad22a7', 'en', '23', 'highlights', '1', 'No Accidents/Damage Reported to CARFAX'); 
insert into tdir_details_uris_text (domain, uri, id_language, id_categorie, id_data, id_ordinal, n_text) values ('motors.shop.ebay.com', 'http://cgi.ebay.com/ebaymotors/2009-FORD-MUSTANG-GT-BLACK-BEAUTY-16K-MILES-WOW-/230580626087?pt=US_Cars_Trucks&hash=item35afad22a7', 'en', '23', 'highlights', '2', 'No Airbag Deployment Reported to CARFAX'); 
insert into tdir_details_uris_text (domain, uri, id_language, id_categorie, id_data, id_ordinal, n_text) values ('motors.shop.ebay.com', 'http://cgi.ebay.com/ebaymotors/2009-FORD-MUSTANG-GT-BLACK-BEAUTY-16K-MILES-WOW-/230580626087?pt=US_Cars_Trucks&hash=item35afad22a7', 'en', '23', 'highlights', '3', 'Vehicle Qualifies for the CARFAX Buyback Guarantee'); 
insert into tdir_details_uris_text (domain, uri, id_language, id_categorie, id_data, id_ordinal, n_text) values ('motors.shop.ebay.com', 'http://cgi.ebay.com/ebaymotors/2009-FORD-MUSTANG-GT-BLACK-BEAUTY-16K-MILES-WOW-/230580626087?pt=US_Cars_Trucks&hash=item35afad22a7', 'en', '23', 'highlights', '4', 'No Structural/Frame Damage Reported to CARFAX'); 
insert into tdir_details_uris_text (domain, uri, id_language, id_categorie, id_data, id_ordinal, n_text) values ('motors.shop.ebay.com', 'http://cgi.ebay.com/ebaymotors/2009-FORD-MUSTANG-GT-BLACK-BEAUTY-16K-MILES-WOW-/230580626087?pt=US_Cars_Trucks&hash=item35afad22a7', 'en', '23', 'highlights', '5', 'No Manufacturer Recalls Reported to CARFAX'); 
insert into tdir_details_uris_text (domain, uri, id_language, id_categorie, id_data, id_ordinal, n_text) values ('motors.shop.ebay.com', 'http://cgi.ebay.com/ebaymotors/2009-FORD-MUSTANG-GT-BLACK-BEAUTY-16K-MILES-WOW-/230580626087?pt=US_Cars_Trucks&hash=item35afad22a7', 'en', '23', 'highlights', '6', 'No Indication of an Odometer Rollback'); 
+0

Реальный вопрос: какой дизайн лучше подходит для модели * и * Algebra Relation? Всегда начинайте там. –

+0

Есть ли причина домена/url/id_language в обоих tdir_detauls_uris_text и tdir_uris_text? Это, кажется, недостаток в модели, только с первого взгляда. Во всяком случае, я не уверен в реальной «модели», которая пытается быть представлена. Это один-много или много-много и т. Д.? Обязательно соблюдайте это требование. –

ответ

0

Ваша таблица «tdirs_uris_text» в варианте 1 не имеет никакой цели, которую я могу видеть (если у вас есть только две таблицы во всей вашей конструкции). Вопрос в том, будет ли первичный ключ в «tdirs_uris_text» когда-либо использоваться несколько раз в другой таблице (в качестве внешнего ключа). В частности, будет ли когда-нибудь случай, когда таблица «details» имеет внешний ключ «uris», появляется несколько раз? Если так вариант 1 лучше, в противном случае вариант 2 является предпочтительным.

1

Похоже, многие-ко-многим, что потребовало бы спроектировать три таблицы ,

Но я не думаю, что это дизайн, который вы показываете. Я не вижу правильного отношения первичного ключа.

Таблица A будет иметь ID_A в качестве первичного ключа.

Таблица B будет иметь ID_B в качестве первичного ключа.

Таблица JOIN AB будет иметь первичный ключ ID_A, ID_B; каждый из них будет внешним ключом в таблицы A и B соответственно.

+0

Привет, спасибо за ответ. Я обновил пример INSERT INTO. В какой таблице первичный ключ неверен? С наилучшими пожеланиями, –

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