Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];

Вниз

Одна таблица или две?   Найти похожие ветки 

 
Некто ©   (2006-03-24 08:42) [0]

Имеется структура БД (точнее набросок структуры). В ней 2 почти одинаковые таблицы, например, "старая_вещь" и "новая_вещь". Разница в основном заключается в том, что первичные ключи в различны. Предполагается что, после какого либо периода новая вещь превратится в старую и её нужно будет переместить в таблицу старых вещей.
Стоит ли объединить эти таблицы и добавить в объединённую таблицу логическое поле, которое будет хранить флаг того, старая это вещь или новая? Как быть с ключами в случае объединения?

Предполагаемая СУБД MySQL 4.1. Если это имеет значение.

ЗЫ: Сознательно не поместил вопрос в раздел форума "Базы", т.к. это касается организации БД и к Delphi никакого отношения не имеет. :)


 
Думкин ©   (2006-03-24 08:51) [1]

База описана не полностью. Что есть вещь? И т.п.
А все-таки - в базы бы.


 
Некто ©   (2006-03-24 08:58) [2]


> База описана не полностью. Что есть вещь? И т.п.

Она (база) у меня только на бумажке нарисована. У меня ещё полное описание не созрело.

Представь одинаковые таблицы, у одной из которых первичный ключ составной, а у другой нет.


 
Johnmen ©   (2006-03-24 09:13) [3]

Да, стОит объединить в одну.


 
tesseract ©   (2006-03-24 09:14) [4]

а зачем тебе два первичных ключа?

> Как быть с ключами в случае объединения?


индексы не помогают?


> Представь одинаковые таблицы, у одной из которых первичный
> ключ составной,


Добавь в составной ключ ещё один индекс.


 
Sergey13 ©   (2006-03-24 09:40) [5]

2Некто ©   (24.03.06 08:42)
>Как быть с ключами в случае объединения?
Если база у тебя пока только на бумаге, то какие проблемы ты тут ожидаешь? 8-)


 
ivb2001 ©   (2006-03-24 10:10) [6]

Если использовать SQL, то прикинь по своей базе сам - нужны-ли индексы вообще? Может обойдешься SELECTом с обычными WHERE и ORDER BY?


 
Sergey13 ©   (2006-03-24 10:12) [7]

2[6] ivb2001 ©   (24.03.06 10:10)
Иногда лучше жевать...


 
Jeer ©   (2006-03-24 10:17) [8]

Sergey13 ©   (24.03.06 10:12) [7]

Некоторые даже этого не умеют:)
Этот ivb2001 ©   (24.03.06 10:10) [6] даже такие стрящные слова как SELECT и еще парочку, знает или слышал ?


> Некто ©   (24.03.06 08:42)



> Стоит ли объединить эти таблицы


Стоит.


 
ivb2001 ©   (2006-03-24 12:50) [9]

Удалено модератором
Примечание: В песочницу


 
Sergey13 ©   (2006-03-24 12:56) [10]

2 [9] ivb2001 ©   (24.03.06 12:50)
После прочтения моих брощюр я навсегда понял что SQL и индексы - это не взаимосключающие вещи. Они друг без друга практически жить не могут. Если в прочитанных тобой фолиантах говорится обратное - огласи их список, плиз.


 
Jeer ©   (2006-03-24 12:57) [11]

ivb2001 ©   (24.03.06 12:50) [9]

И что, продвинутый ты наш, SQL и индексы несовместимы ?
Или ты не в курсе, что значит индекс для SQL-engine ?

Тогда - в библиотеку.


 
Jeer ©   (2006-03-24 12:58) [12]

Sergey13 ©   (24.03.06 12:56) [10]

:)


 
Sandman25 ©   (2006-03-24 13:03) [13]

Sergey13 ©   (24.03.06 12:56) [10]
Jeer ©   (24.03.06 12:57) [11]

Не сочтите за попытку защиты вашего оппонента (он таки не прав), то во многих случаях индексы действительно вредят. Например, если вставка является доминирующей операцией и ее время критично, а выборки и изменения происходят крайне редко, или некритичны по времени.


 
ivb2001 ©   (2006-03-24 13:10) [14]

Удалено модератором


 
Sergey13 ©   (2006-03-24 13:11) [15]

2 [13] Sandman25 ©   (24.03.06 13:03)
Да все это понятно. Но у ivb2001 идет противопоставление SQL и индексов - против чего я лично и "восстал". Кроме того, как можно без индексов обеспечить целостность и непротиворечивость инфы в БД? Независимо от SQL/No_SQL?


 
_inic   (2006-03-24 13:44) [16]

Вообще, имхо, нельзя определенно сказать, объединять или нет, ибо суть вещи не раскрыта.
Может у новой вещи один набор аттрибутов, а у старой - другой.
В этом случае , опять имхо, оптимальнее "вести" две таблицы.


 
Sergey13 ©   (2006-03-24 13:54) [17]

2[16] _inic   (24.03.06 13:44)
>В этом случае , опять имхо, оптимальнее "вести" две таблицы.
Просто в этом случае, надо атрибуты хранить хитрее, чем просто набор полей в главной таблице.


 
ivb2001 ©   (2006-03-24 13:57) [18]

Удалено модератором


 
Sergey13 ©   (2006-03-24 14:04) [19]

2[18] ivb2001 ©   (24.03.06 13:57)
А как ключи в БД организованы - не напомнишь? Мне помнится (в брощюрке видел) - через индексы. И как с этим вяжется твое "нужны-ли индексы вообще"?


 
ivb2001 ©   (2006-03-24 14:22) [20]

Удалено модератором


 
ivb2001 ©   (2006-03-24 14:29) [21]

Удалено модератором


 
Danilka ©   (2006-03-24 14:33) [22]

[20] ivb2001 ©   (24.03.06 14:22)
То-есть, в БД, в проектировании которых ты принимал участие, есть хотябы один форегинкей, по неиндексированым полям?
Просто интересно.


 
Sergey13 ©   (2006-03-24 14:46) [23]

2[20] ivb2001 ©   (24.03.06 14:22)
>1.Только первичный! (!!!сюрприз, если не ошибаюсь )
Что, "только первичный"? А уникальный? В некоторых БД и внешний ключ без дополнительно индекса не сделаешь. А уж в главной таблице при этом он просто обязателен (ПК).

>Если бы я написал "нужны-ли будут тебе в этой таблице индексы вообще" ВАМ было бы понятнее?
Мне нет. Человек спрашивает про ключевые поля и есть ли смысл в объединении таблиц. А ты ему говоришь
>Если использовать SQL, то прикинь по своей базе сам - нужны-ли индексы вообще?
Т.е. я понял (и не только я), что если не использовать SQL, то индексы себя еще как то оправдывают. А вот если задействовать это чудо SQL, то они и нафик не нужны ваще. Кроме того этот ответ вообще не в контексте вопроса.

2[21] ivb2001 ©   (24.03.06 14:29)
>Вдогонку, пока меня опять дерьмом не облили.
>Сказав "Только первичный", имел ввиду ключ в таблице SQL
А что такое "таблица SQL"? 8-)


 
Danilka ©   (2006-03-24 14:47) [24]

[20] ivb2001 ©   (24.03.06 14:22)
> 1.Только первичный! (!!!сюрприз, если не ошибаюсь )

Вообще-то, фраза из [6] предполагает вообще отказаться от индексов, в том числе и ПК, разве не так?
Думаецца, именно призыв к отказу от ПК и вызвал вполне прогнозируемую реакцию.


 
ivb2001 ©   (2006-03-24 15:19) [25]

Удалено модератором


 
Sergey13 ©   (2006-03-24 15:31) [26]

2[25] ivb2001 ©   (24.03.06 15:19)
Вот ведь упорный какой! 8-)
1. Как SQL позволяет выкинуть индексы вообще?
2. Если "Теория РЕКОМЕНДУЕТ" почему не создаешь? C SQL работаешь потому что?


 
ivb2001 ©   (2006-03-24 16:16) [27]

Удалено модератором


 
Jeer ©   (2006-03-24 16:20) [28]

Возвращаемся к


> ivb2001 ©   (24.03.06 10:10) [6]
>
> Если использовать SQL, то прикинь по своей базе сам - нужны-
> ли индексы вообще? Может обойдешься SELECTом с обычными
> WHERE и ORDER BY?


Разбираем:

>Если использовать SQL

В сабже и так оговорена СУБД MySQL - это уже подразумевает использование SQL-запросов.

>нужны  ли индексы вообще?
SQL-engine и спрашивать не будет и так их создаст для primary key.
Впрочем, это относится к ограничению целостности, совместно со специально создаваемыми индексами unique constraint, unique index.

>SELECTом с обычными WHERE и ORDER BY?

А это уже непонимание важности индексов для SELECT с WHERE и ORDER BY.

Можно его не создавать, можно, но дальше начинается полный перебор или, например для MS SQL автоматическое создание статистики, но возрастают накладные расходы.

Индекс используется всегда, если:
- ссылается на предикат;
- индексируемый столбец не меняется функцией или арифм.операцией;

Эффективность индекса резко возрастает при создании конкатенированного индекса и выборки по этим же полям в том же порядке.


 
Esu ©   (2006-03-24 18:41) [29]

IMHO спорить о нужности дополнительных индексов бессмысленно по [0]. На бумаге, насколько я понимаю, было нарисовано 2 таблицы не связанные между собой. Предполагается вообще их объединить в одну... Нужны ли там доп индексы ? IMHO ХЗ будет наиболее верным ответом исходя из имеющихся данных :)

BTW Может быть в MySQL это и не так (как-то не довелось проверить) но в MSSQL таблица вполне себе может быть создана и без явного назначения первичного ключа


 
ivb2001 ©   (2006-03-24 19:47) [30]

Удалено модератором


 
ivb200_1   (2006-03-24 20:21) [31]

Удалено модератором
Примечание: Ишнорирование модератора


 
ivb200_1   (2006-03-24 20:51) [32]

Удалено модератором


 
ivb200_1   (2006-03-24 21:10) [33]

Удалено модератором


 
Kerk ©   (2006-03-24 21:15) [34]

Читал где-то обсуждение...
Инет-магазин.. две таблички - корзина и заказы. Стоит ли объединять?

Тут фишка в чем "корзина" - маленькая табличка всегда (потому что данные там временные, лежат пока в заказ не перенесли), потому запросы по ней будут выполняться быстрее, чем в объединенной таблице с полем IsBasket.


 
_uw_   (2006-03-25 09:55) [35]

Удалено модератором
Примечание: Обсуждение модерирования



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.061 c
8-1131797302
zxc
2005-11-12 15:08
2006.04.16
одновременно avi показывать и сверху рисовать


2-1144006969
Евгений Р.
2006-04-02 23:42
2006.04.16
Использование tDataBase


15-1143267479
kilonet
2006-03-25 09:17
2006.04.16
Как обмениваться большими файлами


2-1144000332
Malik
2006-04-02 21:52
2006.04.16
Работа с "левыми" приложениями


15-1143274248
zeff
2006-03-25 11:10
2006.04.16
как лучше сохранять иконку без потери в цвете





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский