|
|
#3 | |
|
Местный
Регистрация: 16.08.2005
Сообщений: 269
![]() |
Цитата:
Впервые о ней услышал тут: http://php.ru/forum/viewtopic.php?t=6199 |
|
|
|
|
|
#6 | |
|
Местный
Регистрация: 05.01.2001
Сообщений: 6,924
![]() |
Не смог твой пример понять. Ты бы хоть пояснил для чего каждая таблица нужна. Из "информативного" названия messagers2, например, это понять нельзя. Тоже самое касается названия поля scil.
Я имел в виду такую структуру БД, когда в таблице со списком форумов есть поле вроде Parent_ID указывающее на форум-родитель. Для тем же в качестве родителя выступает только ID форума. Например так: Цитата:
|
|
|
|
|
|
#7 | ||
|
Местный
Регистрация: 16.08.2005
Сообщений: 269
![]() |
Цитата:
-- Форумы CREATE TABLE tems ( id INT AUTO_INCREMENT PRIMARY KEY, categori TINYTEXT, -- категория к который относятся темы tema TINYTEXT, -- название темы scil TINYTEXT, -- Ссылка на подтемы (название таблицы), данной темы num_tem INT, -- кол-во тем posl_mess TINYTEXT, --кто оставил последнее сообщение levelz TINYTEXT -- Вложенность, уровень ) -- Темы в форуме CREATE TABLE "Ссылка на подтемы (название таблицы), данной темы" ( ids INT AUTO_INCREMENT PRIMARY KEY, podtema TINYTEXT, -- Название подтемы scils TINYTEXT, -- Ссылка на сообщение (название таблицы), данной подтемы num_mess INT, -- кол-во сообщений в теме posled_mess TINYTEXT, -- кто оставил последнее сообщение в теме datazz DATETIME, -- дата создания levelz TINYTEXT -- Вложенность, уровень ) -- Ответы на тему CREATE TABLE "Ссылка на сообщение (название таблицы), данной подтемы" ( ids INT AUTO_INCREMENT PRIMARY KEY, nickname TINYTEXT, -- Логин messaga LONGTEXT, -- Сообщение datazz TINYTEXT -- дата ) зы: как заполнчются поля в моём предыдущем посте =) ззы: при каждой новой теме форума либо подтеме форума создаёться новая таблица... Тоесть при наличии одной темы и 5 подтем имеем 6 таблиц... при наличие 4 тем... и 0 подтем в каждой имеем 4 таблицы... Цитата:
Мне интересно, если у нас есть только три таблицы и вних хранятся скажем "ccылки" на нужные данные, то если данных в таблице будет 1 миллион, то как скажется это на быстродействии, если при выборке нужных данных мы используем запрос SELECT (поиск)... при условии, что он проходится по всем записям в таблице... И возникает ещё один вопрос, какая из структур будет эффективнее в работе... та которая имеет допустим 1 миллион таблиц либо структура с тремя таблицами с 1 миллионом полей и "ссылками" на данные в эти таблицы? |
||
|
|
|
|
#8 |
|
Местный
Регистрация: 05.01.2001
Сообщений: 6,924
![]() |
Подобная схема имеет ряд серьезных недостатков:<OL><LI>Для запросов придется использовать динамический SQL, что само по себе сразу ухудшает производительность.</LI><LI>Лишние накладные расходы на хранение большого кол-ва таблиц. Ведь кроме собственно данных есть еще и служебная информация о таблице. Плюс возможность (пусть даже и теоретическая) натолкнуться на физические ограничения СУБД на кол-во таблиц.</LI><LI>Создание тем и форумов будет требовать больше времени так как сначала требуется создать таблицу, после чего уже записывать данные.</LI><LI>Следствием п.3 является необходимость наличия у пользователя повышенных привилегий что противоречит общепринятой практике работы с минимально необходимыми привилегиями.</LI><LI>Сложнее будет сделать поиск, отбор всех сообщений пользователя и тому подобную функциональность.</LI><LI>Реляционные схемы построения базы обычно активно применяют механизмы защиты целостности базы предоставляемые самой СУБД. Например, внешние ключи. В данном же случае нельзя заранее создать отношения типа FOREIGN KEY. То есть надо или вообще отказываться от механимзмов зашиты - что глупо - или создавать подобные связи на лету вместе с таблицей - что влечет еще большие накладные расходы.</LI></OL>
Как итог: это плохая идея. Раз у нас реляционные СУБД, то и базы надо строить соответственно. Иначе жди проблем. Насчет скорости работы тоже думаю все понятно. |
|
|
![]() |
| Опции темы | |
Похожие темы
|
|
| Тема | Автор |
|
Builder C++ и Oracle Базы Данных Подскажите, где можно почитать про работа с Oracle в <STRONG>Builder C</STRONG>++<STRONG> ? Желательно, что бы литература была ориентирована на новичка (т.е. написано как подключится средсвами... |
luchik |
|
помогите с FoxPro- Grid Базы Данных у меня есть таблица и есть форма с обектом грид ..... (как присвоить таблицу объекту grid я знаю)....как сделать так чтобы объект grid заполнила таблица с условием что одно из полей имеет некоторое... |
Chrono |
|
Базы Данных Как подсчитать сумму по месяцам У меня есть запрос, который работает : select date_o,sum(SUMMA) from mt_12007 group by date_o И я хочу чтобы он подсчитывал сумму по месяцам, пробовал так, но не работает! select... |
bax |
|
Базы Данных CMS-системы для создания прикладных программ Здравствуйте! Подскажите кто что думает... Существует множество CMS-систем для управления сайтом. А существуют ли подобные системы для создания прикладных программ? Если не существуют - то почему... |
aleksmir |
|
Базы Данных ADO+Excel: пропадает последняя строка Читаю Excel-файлы через ADO. До сих пор всё было нормально, но вот появился такой Excel-файл, при чтении которого ADO игнорирует последнюю строку. То есть RecordSet.RecordCount на единицу меньше, чем... |
hiparick |
|
Изменить Connection string при выполнении программы Базы Данных Проблема. Создал визардом datasource и надо заменить Connection string во время работы - место расположения базы заранее неизвестно. Как это сделать? (VS2005, C#) |
V.Aks |
|
|