Дизайн базы данных - какой дизайн я должен использовать? Два варианта - PullRequest
1 голос
/ 05 февраля 2011

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

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

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

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

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

enter image description here

enter image description here


Обновление: просто чтобы добавить пример INSERT INTO

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');

Ответы [ 2 ]

1 голос
/ 05 февраля 2011

Звучит как отношение «многие ко многим», для которого потребуется дизайн с тремя столами.

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

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

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

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

0 голосов
/ 09 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...