Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > организация БД


Автор: MoLeX 13.3.2009, 13:12
есть БД, в которой храниться ссылка
Код

CREATE TABLE IF NOT EXISTS `page` (
  `id` int(11) NOT NULL auto_increment COMMENT 'ID страницы',
  `links` varchar(128) character set utf8 NOT NULL COMMENT 'Название ссылки',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

INSERT INTO `pages` (`id`, `links`) VALUES (1, 'index');
INSERT INTO `pages` (`id`, `links`) VALUES (2, 'news');
INSERT INTO `pages` (`id`, `links`) VALUES (3, 'text');


т.е. из url'а http://site.name/index.html в БД храниться только index

но может получиться и такая ссылка http://site.name/index/news/text/index.html, ией будут соответствовать 2 результата (в результате конфликт).


Вопрос: как лучше организовать хранение ссылок.
Мне только приходит в голову только этот вариант: хранить полную ссылку, т.е. что-то наподобие:

Код

INSERT INTO `pages` (`id`, `links`) VALUES (1, 'index');
INSERT INTO `pages` (`id`, `links`) VALUES (2, 'index/news');
INSERT INTO `pages` (`id`, `links`) VALUES (3, 'index/news/text');


Добавлено через 37 секунд
P.S. Может есть какой-нибудь другой способ, красивый и лучше?!

Автор: azesmcar 13.3.2009, 13:20
может так?

link_types
Код

D       URL              FOLDER
1         sitename     index/news
2         sitename     index/news/text


Код

ID       LINK              FOLDER_ID
1             index.html     1
1             index.html     2


а может я неправильно понял вопрос smile

Добавлено через 1 минуту и 33 секунды
Цитата

но может получиться и такая ссылка http://site.name/index/news/text/index.html, ией будут соответствовать 2 результата (в результате конфликт).


в результате какой операции может получится? И где конфликт?

Автор: MoLeX 13.3.2009, 13:37
Цитата(azesmcar @  13.3.2009,  13:20 Найти цитируемый пост)
И где конфликт? 

а конфликт заключается в том что в БД будут две одинаковые записи (или более), и в место скажем перенапрваления со страницы пользователь получит совсем другое (пример)

Добавлено через 2 минуты и 46 секунд
Цитата(azesmcar @  13.3.2009,  13:20 Найти цитируемый пост)
link_types
Код

D       URL              FOLDER
1         sitename     index/news
2         sitename     index/news/text



Код

ID       LINK              FOLDER_ID
1             index.html     1
1             index.html     2




выход. но связанные таблицы получаются...

Автор: azesmcar 13.3.2009, 13:46
Цитата

выход. но связанные таблицы получаются...


а разве это плохо?

Добавлено через 44 секунды
атомарность полей - есть хорошо и соответствует правилам нормализации..точнее одному правилу ;)

Добавлено через 2 минуты и 42 секунды
к тому же в этом случае вместо текста для каждой ссылки в папке index/news/text будет хранится только число..база получается более оптимизированной

Автор: MoLeX 13.3.2009, 14:25
Цитата(azesmcar @  13.3.2009,  13:46 Найти цитируемый пост)
а разве это плохо?

да нет. просто не хотелось... а выхода похоже нет другого

Автор: azesmcar 13.3.2009, 14:44
Цитата

а выхода похоже нет другого 


ну можно создать view для этого запроса..а можно узнать чем обусловлено нежелание создавать таблицу?

Автор: gta4kv 13.3.2009, 17:41
MoLeX, реально тупишь. Зачем с бубном танцевать если можно просто две таблицы связать

Автор: MoLeX 15.3.2009, 14:28
gta4kv, 
кофе перепил  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)